[openib-general] [PATCH v2] opensm: remove obsolete p_report_buf
Yevgeny Kliteynik
kliteyn at dev.mellanox.co.il
Thu Nov 2 05:24:00 PST 2006
Hi Sasha.
Looks good, thanks.
--
Yevgeny
Sasha Khapyorsky wrote:
> This removes obsolete now shared sm->p_report_buf buffer and cleans
> up related code. And also introduces new log function osm_log_printf()
> which currently trivially sends formatted output to stdout.
>
> Signed-off-by: Sasha Khapyorsky <sashak at voltaire.com>
> ---
> osm/include/opensm/osm_base.h | 5 --
> osm/include/opensm/osm_log.h | 3 +
> osm/include/opensm/osm_sm.h | 2 -
> osm/include/opensm/osm_state_mgr.h | 8 --
> osm/include/opensm/osm_ucast_mgr.h | 5 --
> osm/opensm/libopensm.map | 3 +-
> osm/opensm/osm_log.c | 19 +++++
> osm/opensm/osm_mcast_mgr.c | 11 ++--
> osm/opensm/osm_sm.c | 15 +----
> osm/opensm/osm_state_mgr.c | 138 ++++++++++++-----------------------
> osm/opensm/osm_ucast_mgr.c | 80 +++++++--------------
> 11 files changed, 104 insertions(+), 185 deletions(-)
>
> diff --git a/osm/include/opensm/osm_base.h b/osm/include/opensm/osm_base.h
> index 57dd4fd..20e2cc3 100644
> --- a/osm/include/opensm/osm_base.h
> +++ b/osm/include/opensm/osm_base.h
> @@ -714,11 +714,6 @@ typedef enum _osm_state_mgr_mode
> *
> **********/
>
> -#define OSM_REPORT_BUF_SIZE 0x10000
> -#define OSM_REPORT_LINE_SIZE 0x256
> -#define OSM_REPORT_BUF_THRESHOLD (OSM_REPORT_BUF_SIZE / OSM_REPORT_LINE_SIZE)
> -
> -
> /****d* OpenSM: Base/osm_sm_signal_t
> * NAME
> * osm_sm_signal_t
> diff --git a/osm/include/opensm/osm_log.h b/osm/include/opensm/osm_log.h
> index 62f3a0c..6a1a93f 100644
> --- a/osm/include/opensm/osm_log.h
> +++ b/osm/include/opensm/osm_log.h
> @@ -370,6 +370,9 @@ osm_log_is_active(
> * osm_log_destroy
> *********/
>
> +extern int osm_log_printf(osm_log_t *p_log, osm_log_level_t level,
> + const char *fmt, ...);
> +
> void
> osm_log(
> IN osm_log_t* const p_log,
> diff --git a/osm/include/opensm/osm_sm.h b/osm/include/opensm/osm_sm.h
> index bc812f3..05b87ac 100644
> --- a/osm/include/opensm/osm_sm.h
> +++ b/osm/include/opensm/osm_sm.h
> @@ -178,8 +178,6 @@ typedef struct _osm_sm
> osm_vla_rcv_ctrl_t vla_rcv_ctrl;
> osm_pkey_rcv_t pkey_rcv;
> osm_pkey_rcv_ctrl_t pkey_rcv_ctrl;
> - char* p_report_buf;
> -
> } osm_sm_t;
> /*
> * FIELDS
> diff --git a/osm/include/opensm/osm_state_mgr.h b/osm/include/opensm/osm_state_mgr.h
> index ad4afa0..7aaab58 100644
> --- a/osm/include/opensm/osm_state_mgr.h
> +++ b/osm/include/opensm/osm_state_mgr.h
> @@ -121,7 +121,6 @@ typedef struct _osm_state_mgr
> cl_qlist_t idle_time_list;
> cl_plock_t *p_lock;
> cl_event_t *p_subnet_up_event;
> - char *p_report_buf;
> osm_sm_state_t state;
> osm_state_mgr_mode_t state_step_mode;
> osm_signal_t next_stage_signal;
> @@ -170,9 +169,6 @@ typedef struct _osm_state_mgr
> * p_subnet_up_event
> * Pointer to the event to set if/when the subnet comes up.
> *
> -* p_report_buf
> -* Pointer to the large log buffer used for user reports.
> -*
> * state
> * State of the SM.
> *
> @@ -380,7 +376,6 @@ osm_state_mgr_init(
> IN const osm_sm_mad_ctrl_t* const p_mad_ctrl,
> IN cl_plock_t* const p_lock,
> IN cl_event_t* const p_subnet_up_event,
> - IN char* const p_report_buf,
> IN osm_log_t* const p_log );
> /*
> * PARAMETERS
> @@ -420,9 +415,6 @@ osm_state_mgr_init(
> * p_subnet_up_event
> * [in] Pointer to the event to set if/when the subnet comes up.
> *
> -* p_report_buf
> -* [in] Pointer to the large log buffer used for user reports.
> -*
> * p_log
> * [in] Pointer to the log object.
> *
> diff --git a/osm/include/opensm/osm_ucast_mgr.h b/osm/include/opensm/osm_ucast_mgr.h
> index 0fbfc66..1c10abb 100644
> --- a/osm/include/opensm/osm_ucast_mgr.h
> +++ b/osm/include/opensm/osm_ucast_mgr.h
> @@ -105,7 +105,6 @@ typedef struct _osm_ucast_mgr
> osm_req_t *p_req;
> osm_log_t *p_log;
> cl_plock_t *p_lock;
> - char *p_report_buf;
> } osm_ucast_mgr_t;
> /*
> * FIELDS
> @@ -204,7 +203,6 @@ osm_ucast_mgr_init(
> IN osm_ucast_mgr_t* const p_mgr,
> IN osm_req_t* const p_req,
> IN osm_subn_t* const p_subn,
> - IN char* const p_report_buf,
> IN osm_log_t* const p_log,
> IN cl_plock_t* const p_lock );
> /*
> @@ -218,9 +216,6 @@ osm_ucast_mgr_init(
> * p_subn
> * [in] Pointer to the Subnet object for this subnet.
> *
> -* p_report_buf
> -* [in] Pointer to the large log buffer used for user reporting.
> -*
> * p_log
> * [in] Pointer to the log object.
> *
> diff --git a/osm/opensm/libopensm.map b/osm/opensm/libopensm.map
> index 60d532f..25370b1 100644
> --- a/osm/opensm/libopensm.map
> +++ b/osm/opensm/libopensm.map
> @@ -1,6 +1,7 @@
> -OPENSM_1.3 {
> +OPENSM_1.4 {
> global:
> osm_log;
> + osm_log_printf;
> osm_is_debug;
> osm_log_init;
> osm_log_init_v2;
> diff --git a/osm/opensm/osm_log.c b/osm/opensm/osm_log.c
> index 8ac7f8f..c6cc072 100644
> --- a/osm/opensm/osm_log.c
> +++ b/osm/opensm/osm_log.c
> @@ -109,6 +109,25 @@ static void truncate_log_file(osm_log_t*
> }
> #endif /* ndef WIN32 */
>
> +int osm_log_printf(osm_log_t *p_log, osm_log_level_t level,
> + const char *fmt, ...)
> +{
> + va_list args;
> + int ret;
> +
> + if (!(p_log->level&level))
> + return 0;
> +
> + va_start(args, fmt);
> + ret = vfprintf(stdout, fmt, args);
> + va_end(args);
> +
> + if (p_log->flush || level&OSM_LOG_ERROR)
> + fflush( stdout );
> +
> + return ret;
> +}
> +
> void
> osm_log(
> IN osm_log_t* const p_log,
> diff --git a/osm/opensm/osm_mcast_mgr.c b/osm/opensm/osm_mcast_mgr.c
> index 5a01578..82ef7c3 100644
> --- a/osm/opensm/osm_mcast_mgr.c
> +++ b/osm/opensm/osm_mcast_mgr.c
> @@ -1382,14 +1382,13 @@ static void
> mcast_mgr_dump_sw_routes(
> IN const osm_mcast_mgr_t* const p_mgr,
> IN const osm_switch_t* const p_sw,
> - IN FILE *p_mcfdbFile )
> + IN FILE *file )
> {
> osm_mcast_tbl_t* p_tbl;
> int16_t mlid_ho = 0;
> int16_t mlid_start_ho;
> uint8_t position = 0;
> int16_t block_num = 0;
> - char line[OSM_REPORT_LINE_SIZE];
> boolean_t print_lid;
> const osm_node_t* p_node;
> uint16_t i, j;
> @@ -1404,7 +1403,7 @@ mcast_mgr_dump_sw_routes(
>
> p_tbl = osm_switch_get_mcast_tbl_ptr( p_sw );
>
> - fprintf( p_mcfdbFile, "\nSwitch 0x%016" PRIx64 "\n"
> + fprintf( file, "\nSwitch 0x%016" PRIx64 "\n"
> "LID : Out Port(s)\n",
> cl_ntoh64( osm_node_get_node_guid( p_node ) ) );
> while ( block_num <= p_tbl->max_block_in_use )
> @@ -1415,7 +1414,7 @@ mcast_mgr_dump_sw_routes(
> mlid_ho = mlid_start_ho + i;
> position = 0;
> print_lid = FALSE;
> - sprintf( line, "0x%04X :", mlid_ho + IB_LID_MCAST_START_HO );
> + fprintf( file, "0x%04X :", mlid_ho + IB_LID_MCAST_START_HO );
> while ( position <= p_tbl->max_position )
> {
> mask_entry = cl_ntoh16((*p_tbl->p_mask_tbl)[mlid_ho][position]);
> @@ -1428,13 +1427,13 @@ mcast_mgr_dump_sw_routes(
> for (j = 0 ; j < 16 ; j++)
> {
> if ( (1 << j) & mask_entry )
> - sprintf( line, "%s 0x%03X ", line, j+(position*16) );
> + fprintf( file, " 0x%03X ", j+(position*16) );
> }
> position++;
> }
> if (print_lid)
> {
> - fprintf( p_mcfdbFile, "%s\n", line );
> + fprintf( file, "\n" );
> }
> }
> block_num++;
> diff --git a/osm/opensm/osm_sm.c b/osm/opensm/osm_sm.c
> index fef3cac..fb4f759 100644
> --- a/osm/opensm/osm_sm.c
> +++ b/osm/opensm/osm_sm.c
> @@ -256,9 +256,6 @@ osm_sm_destroy(
> cl_event_destroy( &p_sm->signal );
> cl_event_destroy( &p_sm->subnet_up_event );
>
> - if( p_sm->p_report_buf != NULL )
> - free( p_sm->p_report_buf );
> -
> osm_log( p_sm->p_log, OSM_LOG_SYS, "Exiting SM\n" ); /* Format Waived */
> OSM_LOG_EXIT( p_sm->p_log );
> }
> @@ -291,15 +288,6 @@ osm_sm_init(
> p_sm->p_disp = p_disp;
> p_sm->p_lock = p_lock;
>
> - p_sm->p_report_buf = malloc( OSM_REPORT_BUF_SIZE );
> - if( p_sm->p_report_buf == NULL )
> - {
> - osm_log( p_sm->p_log, OSM_LOG_ERROR,
> - "osm_sm_init: ERR 2E09: "
> - "Can't allocate report buffer\n" );
> - status = IB_INSUFFICIENT_MEMORY;
> - goto Exit;
> - }
> status = cl_event_init( &p_sm->signal, FALSE );
> if( status != CL_SUCCESS )
> goto Exit;
> @@ -385,7 +373,6 @@ osm_sm_init(
> status = osm_ucast_mgr_init( &p_sm->ucast_mgr,
> &p_sm->req,
> p_sm->p_subn,
> - p_sm->p_report_buf,
> p_sm->p_log, p_sm->p_lock );
> if( status != IB_SUCCESS )
> goto Exit;
> @@ -409,7 +396,7 @@ osm_sm_init(
> &p_sm->mad_ctrl,
> p_sm->p_lock,
> &p_sm->subnet_up_event,
> - p_sm->p_report_buf, p_sm->p_log );
> + p_sm->p_log );
> if( status != IB_SUCCESS )
> goto Exit;
>
> diff --git a/osm/opensm/osm_state_mgr.c b/osm/opensm/osm_state_mgr.c
> index a2efee4..66da6fa 100644
> --- a/osm/opensm/osm_state_mgr.c
> +++ b/osm/opensm/osm_state_mgr.c
> @@ -118,7 +118,6 @@ osm_state_mgr_init(
> IN const osm_sm_mad_ctrl_t * const p_mad_ctrl,
> IN cl_plock_t * const p_lock,
> IN cl_event_t * const p_subnet_up_event,
> - IN char *const p_report_buf,
> IN osm_log_t * const p_log )
> {
> cl_status_t status;
> @@ -136,7 +135,6 @@ osm_state_mgr_init(
> CL_ASSERT( p_sm_state_mgr );
> CL_ASSERT( p_mad_ctrl );
> CL_ASSERT( p_lock );
> - CL_ASSERT( p_report_buf );
>
> osm_state_mgr_construct( p_mgr );
>
> @@ -154,7 +152,6 @@ osm_state_mgr_init(
> p_mgr->state = OSM_SM_STATE_IDLE;
> p_mgr->p_lock = p_lock;
> p_mgr->p_subnet_up_event = p_subnet_up_event;
> - p_mgr->p_report_buf = p_report_buf;
> p_mgr->state_step_mode = OSM_STATE_STEP_CONTINUOUS;
> p_mgr->next_stage_signal = OSM_SIGNAL_NONE;
>
> @@ -1255,16 +1252,19 @@ __osm_state_mgr_report(
> uint8_t port_num;
> uint8_t start_port;
> uint32_t num_ports;
> - char line[OSM_REPORT_LINE_SIZE];
> uint8_t node_type;
> - uint32_t line_num = 0;
> +
> + if( !osm_log_is_active( p_mgr->p_log, OSM_LOG_VERBOSE ) )
> + return;
>
> OSM_LOG_ENTER( p_mgr->p_log, __osm_state_mgr_report );
>
> - if( !osm_log_is_active( p_mgr->p_log, OSM_LOG_VERBOSE ) )
> - {
> - goto Exit;
> - }
> + osm_log_printf( p_mgr->p_log, OSM_LOG_VERBOSE,
> + "\n==================================================="
> + "===================================================="
> + "\nVendor : Ty "
> + ": # : Sta : LID : LMC : MTU : LWA : LSA : Port GUID "
> + " : Neighbor Port (Port #)\n" );
>
> p_tbl = &p_mgr->p_subn->port_guid_tbl;
>
> @@ -1294,29 +1294,16 @@ __osm_state_mgr_report(
> num_ports = osm_port_get_num_physp( p_port );
> for( port_num = start_port; port_num < num_ports; port_num++ )
> {
> - if( line_num == 0 )
> - {
> - strcpy( p_mgr->p_report_buf,
> - "\n==================================================="
> - "====================================================" );
> - strcat( p_mgr->p_report_buf,
> - "\nVendor : Ty "
> - ": # : Sta : LID : LMC : MTU : LWA : LSA : Port GUID "
> - " : Neighbor Port (Port #)\n" );
> - line_num++;
> - }
> -
> p_physp = osm_port_get_phys_ptr( p_port, port_num );
> if( ( p_physp == NULL ) || ( !osm_physp_is_valid( p_physp ) ) )
> continue;
>
> - sprintf( line, "%s : %s : %02X :",
> - osm_get_manufacturer_str( cl_ntoh64
> - ( osm_node_get_node_guid
> - ( p_node ) ) ),
> - osm_get_node_type_str_fixed_width( node_type ), port_num );
> -
> - strcat( p_mgr->p_report_buf, line );
> + osm_log_printf( p_mgr->p_log, OSM_LOG_VERBOSE, "%s : %s : %02X :",
> + osm_get_manufacturer_str( cl_ntoh64
> + ( osm_node_get_node_guid
> + ( p_node ) ) ),
> + osm_get_node_type_str_fixed_width( node_type ),
> + port_num );
>
> p_pi = osm_physp_get_port_info_ptr( p_physp );
>
> @@ -1324,61 +1311,40 @@ __osm_state_mgr_report(
> * Port state is not defined for switch port 0
> */
> if( port_num == 0 )
> - strcat( p_mgr->p_report_buf, " :" );
> + osm_log_printf( p_mgr->p_log, OSM_LOG_VERBOSE, " :" );
> else
> - {
> - sprintf( line, " %s :",
> - osm_get_port_state_str_fixed_width
> - ( ib_port_info_get_port_state( p_pi ) ) );
> - strcat( p_mgr->p_report_buf, line );
> - }
> + osm_log_printf( p_mgr->p_log, OSM_LOG_VERBOSE, " %s :",
> + osm_get_port_state_str_fixed_width
> + ( ib_port_info_get_port_state( p_pi ) ) );
>
> /*
> * LID values are only meaningful in select cases.
> */
> - if( ib_port_info_get_port_state( p_pi ) != IB_LINK_DOWN )
> - {
> - if( ( ( node_type == IB_NODE_TYPE_SWITCH ) && ( port_num == 0 ) )
> - || ( node_type != IB_NODE_TYPE_SWITCH ) )
> - {
> - sprintf( line, " %04X : %01X :",
> - cl_ntoh16( p_pi->base_lid ),
> - ib_port_info_get_lmc( p_pi ) );
> -
> - strcat( p_mgr->p_report_buf, line );
> - }
> - else
> - strcat( p_mgr->p_report_buf, " : :" );
> - }
> + if( ib_port_info_get_port_state( p_pi ) != IB_LINK_DOWN
> + && ( ( node_type == IB_NODE_TYPE_SWITCH && port_num == 0 )
> + || node_type != IB_NODE_TYPE_SWITCH ) )
> + osm_log_printf( p_mgr->p_log, OSM_LOG_VERBOSE, " %04X : %01X :",
> + cl_ntoh16( p_pi->base_lid ),
> + ib_port_info_get_lmc( p_pi ) );
> else
> - strcat( p_mgr->p_report_buf, " : :" );
> + osm_log_printf( p_mgr->p_log, OSM_LOG_VERBOSE, " : :" );
>
> if( port_num != 0 )
> - {
> - sprintf( line, " %s : %s : %s ",
> - osm_get_mtu_str( ib_port_info_get_neighbor_mtu( p_pi ) ),
> - osm_get_lwa_str( p_pi->link_width_active ),
> - osm_get_lsa_str( ib_port_info_get_link_speed_active
> - ( p_pi ) ) );
> - }
> + osm_log_printf( p_mgr->p_log, OSM_LOG_VERBOSE, " %s : %s : %s ",
> + osm_get_mtu_str( ib_port_info_get_neighbor_mtu( p_pi ) ),
> + osm_get_lwa_str( p_pi->link_width_active ),
> + osm_get_lsa_str( ib_port_info_get_link_speed_active
> + ( p_pi ) ) );
> else
> - {
> - sprintf( line, " %s : %s : %s ", " ", " ", " " );
> - }
> - strcat( p_mgr->p_report_buf, line );
> + osm_log_printf( p_mgr->p_log, OSM_LOG_VERBOSE, " : : " );
>
> if( osm_physp_get_port_guid( p_physp ) ==
> p_mgr->p_subn->sm_port_guid )
> - {
> - sprintf( line, "* %016" PRIx64 " *",
> - cl_ntoh64( osm_physp_get_port_guid( p_physp ) ) );
> - }
> + osm_log_printf( p_mgr->p_log, OSM_LOG_VERBOSE, "* %016" PRIx64 " *",
> + cl_ntoh64( osm_physp_get_port_guid( p_physp ) ) );
> else
> - {
> - sprintf( line, ": %016" PRIx64 " :",
> - cl_ntoh64( osm_physp_get_port_guid( p_physp ) ) );
> - }
> - strcat( p_mgr->p_report_buf, line );
> + osm_log_printf( p_mgr->p_log, OSM_LOG_VERBOSE, ": %016" PRIx64 " :",
> + cl_ntoh64( osm_physp_get_port_guid( p_physp ) ) );
>
> if( port_num &&
> ( ib_port_info_get_port_state( p_pi ) != IB_LINK_DOWN ) )
> @@ -1386,36 +1352,26 @@ __osm_state_mgr_report(
> p_remote_physp = osm_physp_get_remote( p_physp );
> if( p_remote_physp && osm_physp_is_valid( p_remote_physp ) )
> {
> - sprintf( line, " %016" PRIx64 " (%02X)",
> - cl_ntoh64( osm_physp_get_port_guid
> - ( p_remote_physp ) ),
> - osm_physp_get_port_num( p_remote_physp ) );
> - strcat( p_mgr->p_report_buf, line );
> + osm_log_printf( p_mgr->p_log, OSM_LOG_VERBOSE,
> + " %016" PRIx64 " (%02X)",
> + cl_ntoh64( osm_physp_get_port_guid
> + ( p_remote_physp ) ),
> + osm_physp_get_port_num( p_remote_physp ) );
> }
> else
> - strcat( p_mgr->p_report_buf, " UNKNOWN" );
> + osm_log_printf( p_mgr->p_log, OSM_LOG_VERBOSE, " UNKNOWN" );
> }
>
> - strcat( p_mgr->p_report_buf, "\n" );
> -
> - if( ++line_num >= OSM_REPORT_BUF_THRESHOLD )
> - {
> - osm_log_raw( p_mgr->p_log, OSM_LOG_VERBOSE, p_mgr->p_report_buf );
> - line_num = 0;
> - }
> + osm_log_printf( p_mgr->p_log, OSM_LOG_VERBOSE, "\n" );
> }
> - strcat( p_mgr->p_report_buf,
> - "------------------------------------------------------"
> - "------------------------------------------------\n" );
> +
> + osm_log_printf( p_mgr->p_log, OSM_LOG_VERBOSE,
> + "------------------------------------------------------"
> + "------------------------------------------------\n" );
> p_port = ( osm_port_t * ) cl_qmap_next( &p_port->map_item );
> }
>
> CL_PLOCK_RELEASE( p_mgr->p_lock );
> -
> - if( line_num != 0 )
> - osm_log_raw( p_mgr->p_log, OSM_LOG_VERBOSE, p_mgr->p_report_buf );
> -
> - Exit:
> OSM_LOG_EXIT( p_mgr->p_log );
> }
>
> diff --git a/osm/opensm/osm_ucast_mgr.c b/osm/opensm/osm_ucast_mgr.c
> index f1d085c..fc97094 100644
> --- a/osm/opensm/osm_ucast_mgr.c
> +++ b/osm/opensm/osm_ucast_mgr.c
> @@ -103,7 +103,6 @@ osm_ucast_mgr_init(
> IN osm_ucast_mgr_t* const p_mgr,
> IN osm_req_t* const p_req,
> IN osm_subn_t* const p_subn,
> - IN char* const p_report_buf,
> IN osm_log_t* const p_log,
> IN cl_plock_t* const p_lock )
> {
> @@ -121,7 +120,6 @@ osm_ucast_mgr_init(
> p_mgr->p_subn = p_subn;
> p_mgr->p_lock = p_lock;
> p_mgr->p_req = p_req;
> - p_mgr->p_report_buf = p_report_buf;
>
> OSM_LOG_EXIT( p_mgr->p_log );
> return( status );
> @@ -184,26 +182,25 @@ __osm_ucast_mgr_dump_path_distribution(
> ib_net64_t remote_guid_ho;
> osm_switch_t* p_sw = (osm_switch_t *)p_map_item;
> osm_ucast_mgr_t* p_mgr = ((struct ucast_mgr_dump_context *)cxt)->p_mgr;
> - char line[OSM_REPORT_LINE_SIZE];
>
> OSM_LOG_ENTER( p_mgr->p_log, __osm_ucast_mgr_dump_path_distribution );
>
> p_node = osm_switch_get_node_ptr( p_sw );
> num_ports = osm_switch_get_num_ports( p_sw );
>
> - sprintf( p_mgr->p_report_buf, "__osm_ucast_mgr_dump_path_distribution: "
> - "Switch 0x%" PRIx64 "\n"
> - "Port : Path Count Through Port",
> - cl_ntoh64( osm_node_get_node_guid( p_node ) ) );
> + osm_log_printf( p_mgr->p_log, OSM_LOG_DEBUG,
> + "__osm_ucast_mgr_dump_path_distribution: "
> + "Switch 0x%" PRIx64 "\n"
> + "Port : Path Count Through Port",
> + cl_ntoh64( osm_node_get_node_guid( p_node ) ) );
>
> for( i = 0; i < num_ports; i++ )
> {
> num_paths = osm_switch_path_count_get( p_sw , i );
> - sprintf( line, "\n %03u : %u", i, num_paths );
> - strcat( p_mgr->p_report_buf, line );
> + osm_log_printf( p_mgr->p_log, OSM_LOG_DEBUG,"\n %03u : %u", i, num_paths );
> if( i == 0 )
> {
> - strcat( p_mgr->p_report_buf, " (switch management port)" );
> + osm_log_printf( p_mgr->p_log, OSM_LOG_DEBUG, " (switch management port)" );
> continue;
> }
>
> @@ -216,26 +213,24 @@ __osm_ucast_mgr_dump_path_distribution(
> switch( osm_node_get_remote_type( p_node, i ) )
> {
> case IB_NODE_TYPE_SWITCH:
> - strcat( p_mgr->p_report_buf, " (link to switch" );
> + osm_log_printf( p_mgr->p_log, OSM_LOG_DEBUG, " (link to switch" );
> break;
> case IB_NODE_TYPE_ROUTER:
> - strcat( p_mgr->p_report_buf, " (link to router" );
> + osm_log_printf( p_mgr->p_log, OSM_LOG_DEBUG, " (link to router" );
> break;
> case IB_NODE_TYPE_CA:
> - strcat( p_mgr->p_report_buf, " (link to CA" );
> + osm_log_printf( p_mgr->p_log, OSM_LOG_DEBUG, " (link to CA" );
> break;
> default:
> - strcat( p_mgr->p_report_buf, " (link to unknown node type" );
> + osm_log_printf( p_mgr->p_log, OSM_LOG_DEBUG, " (link to unknown node type" );
> break;
> }
>
> - sprintf( line, " 0x%" PRIx64 ")", remote_guid_ho );
> - strcat( p_mgr->p_report_buf, line );
> + osm_log_printf( p_mgr->p_log, OSM_LOG_DEBUG, " 0x%" PRIx64 ")",
> + remote_guid_ho );
> }
>
> - strcat( p_mgr->p_report_buf, "\n" );
> -
> - osm_log_raw( p_mgr->p_log, OSM_LOG_ROUTING, p_mgr->p_report_buf );
> + osm_log_printf( p_mgr->p_log, OSM_LOG_DEBUG, "\n" );
>
> OSM_LOG_EXIT( p_mgr->p_log );
> }
> @@ -254,29 +249,24 @@ __osm_ucast_mgr_dump_ucast_routes(
> uint8_t best_port;
> uint16_t max_lid_ho;
> uint16_t lid_ho;
> - uint32_t line_num = 0;
> boolean_t ui_ucast_fdb_assign_func_defined;
> osm_switch_t* p_sw = (osm_switch_t *)p_map_item;
> osm_ucast_mgr_t* p_mgr = ((struct ucast_mgr_dump_context *)cxt)->p_mgr;
> - FILE *p_fdbFile = ((struct ucast_mgr_dump_context *)cxt)->file;
> - char line[OSM_REPORT_LINE_SIZE];
> -
> + FILE *file = ((struct ucast_mgr_dump_context *)cxt)->file;
> +
> OSM_LOG_ENTER( p_mgr->p_log, __osm_ucast_mgr_dump_ucast_routes );
>
> p_node = osm_switch_get_node_ptr( p_sw );
>
> max_lid_ho = osm_switch_get_max_lid_ho( p_sw );
>
> + fprintf( file, "__osm_ucast_mgr_dump_ucast_routes: "
> + "Switch 0x%016" PRIx64 "\n"
> + "LID : Port : Hops : Optimal\n",
> + cl_ntoh64( osm_node_get_node_guid( p_node ) ) );
> for( lid_ho = 1; lid_ho <= max_lid_ho; lid_ho++ )
> {
> - if( line_num == 0 )
> - {
> - sprintf( p_mgr->p_report_buf, "__osm_ucast_mgr_dump_ucast_routes: "
> - "Switch 0x%016" PRIx64 "\n"
> - "LID : Port : Hops : Optimal\n",
> - cl_ntoh64( osm_node_get_node_guid( p_node ) ) );
> - line_num++;
> - }
> + fprintf(file, "0x%04X : ", lid_ho);
>
> port_num = osm_switch_get_port_by_lid( p_sw, lid_ho );
> if( port_num == OSM_NO_PATH )
> @@ -287,9 +277,7 @@ __osm_ucast_mgr_dump_ucast_routes(
> will reassign and compress the LID range. The
> subnet should work fine either way.
> */
> - sprintf( line, "0x%04X : UNREACHABLE\n", lid_ho );
> - strcat( p_mgr->p_report_buf, line );
> - line_num++;
> + fprintf( file, "UNREACHABLE\n" );
> continue;
> }
> /*
> @@ -301,19 +289,15 @@ __osm_ucast_mgr_dump_ucast_routes(
> num_hops = osm_switch_get_hop_count( p_sw, lid_ho, port_num );
> if( num_hops == OSM_NO_PATH )
> {
> - sprintf( line, "0x%04X : UNREACHABLE\n", lid_ho );
> - strcat( p_mgr->p_report_buf, line );
> - line_num++;
> + fprintf( file, "UNREACHABLE\n" );
> continue;
> }
>
> best_hops = osm_switch_get_least_hops( p_sw, lid_ho );
> - sprintf( line, "0x%04X : %03u : %02u : ",
> - lid_ho, port_num, num_hops );
> - strcat( p_mgr->p_report_buf, line );
> + fprintf( file, "%03u : %02u : ", port_num, num_hops );
>
> if( best_hops == num_hops )
> - strcat( p_mgr->p_report_buf, "yes" );
> + fprintf( file, "yes" );
> else
> {
> if (p_mgr->p_subn->p_osm->routing_engine.ucast_fdb_assign)
> @@ -328,23 +312,13 @@ __osm_ucast_mgr_dump_ucast_routes(
> p_sw, lid_ho, TRUE,
> NULL, NULL, NULL, NULL, /* No LMC Optimization */
> ui_ucast_fdb_assign_func_defined );
> - sprintf( line, "No %u hop path possible via port %u!",
> + fprintf( file, "No %u hop path possible via port %u!",
> best_hops, best_port );
> - strcat( p_mgr->p_report_buf, line );
> }
>
> - strcat( p_mgr->p_report_buf, "\n" );
> -
> - if( ++line_num >= OSM_REPORT_BUF_THRESHOLD )
> - {
> - fprintf(p_fdbFile,"%s",p_mgr->p_report_buf );
> - line_num = 0;
> - }
> + fprintf( file, "\n" );
> }
>
> - if( line_num != 0 )
> - fprintf(p_fdbFile,"%s\n",p_mgr->p_report_buf );
> -
> OSM_LOG_EXIT( p_mgr->p_log );
> }
>
More information about the general
mailing list