[openib-general] RE: [PATCH] Opensm - osmt_service.c fixes

Yael Kalka yael at mellanox.co.il
Wed Feb 15 02:32:28 PST 2006


Hi Hal,
I am re-sending the patch with another fix. Please ignore this patch.
Thanks,
Yael

-----Original Message-----
From: Yael Kalka 
Sent: Wednesday, February 15, 2006 12:07 PM
To: halr at voltaire.com
Cc: openib-general at openib.org; Eitan Zahavi; Yael Kalka
Subject: [PATCH] Opensm - osmt_service.c fixes


Hi Hal,

The following patch fixes some problems in osmt_service.c flow, 
along with cosmetic cleanups of the code.

Thanks,
Yael

Signed-off-by:  Yael Kalka <yael at mellanox.co.il>

Index: osmtest/osmt_service.c
===================================================================
--- osmtest/osmt_service.c	(revision 5403)
+++ osmtest/osmt_service.c	(working copy)
@@ -80,7 +80,7 @@ osmt_register_service( IN osmtest_t * co
 
   osm_log( &p_osmt->log, OSM_LOG_INFO,
            "osmt_register_service: "
-           "Registering Service: name:%s id:0x%" PRIx64 ".\n",
+           "Registering service: name:%s id:0x%" PRIx64 "\n",
            service_name, cl_ntoh64(service_id));
 
   cl_memclr( &req, sizeof( req ) );
@@ -140,8 +140,8 @@ osmt_register_service( IN osmtest_t * co
   if( status != IB_SUCCESS )
   {
     osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmt_register_service: ERR 0303: "
-             "ib_query failed (%s).\n", ib_get_err_str( status ) );
+             "osmt_register_service: ERR 4A01: "
+             "ib_query failed (%s)\n", ib_get_err_str( status ) );
     goto Exit;
   }
 
@@ -150,14 +150,14 @@ osmt_register_service( IN osmtest_t * co
   if( status != IB_SUCCESS )
   {
     osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmt_register_service: ERR 0364: "
-             "ib_query failed (%s).\n", ib_get_err_str( status ) );
+             "osmt_register_service: ERR 4A02: "
+             "ib_query failed (%s)\n", ib_get_err_str( status ) );
 
     if( status == IB_REMOTE_ERROR )
     {
       osm_log( &p_osmt->log, OSM_LOG_ERROR,
                "osmt_register_service: "
-               "Remote error = %s.\n",
+               "Remote error = %s\n",
                ib_get_mad_status_str( osm_madw_get_mad_ptr
                                       ( context.result.
                                         p_result_madw ) ) );
@@ -195,7 +195,7 @@ osmt_register_service_with_full_key ( IN
 
   osm_log( &p_osmt->log, OSM_LOG_INFO,
            "osmt_register_service_with_full_key: "
-           "Registering Service: name:%s id:0x%" PRIx64 ".\n",
+           "Registering service: name:%s id:0x%" PRIx64 "\n",
            service_name, cl_ntoh64(service_id));
 
   cl_memclr( &req, sizeof( req ) );
@@ -256,8 +256,8 @@ osmt_register_service_with_full_key ( IN
   if( status != IB_SUCCESS )
   {
     osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmt_register_service_with_full_key: ERR 0303: "
-             "ib_query failed (%s).\n", ib_get_err_str( status ) );
+             "osmt_register_service_with_full_key: ERR 4A03: "
+             "ib_query failed (%s)\n", ib_get_err_str( status ) );
     goto Exit;
   }
 
@@ -280,7 +280,7 @@ osmt_register_service_with_full_key ( IN
     status = IB_REMOTE_ERROR;
     osm_log( &p_osmt->log, OSM_LOG_ERROR,
              "osmt_register_service_with_full_key:"
-             "Data mismatch in service_key.\n"
+             "Data mismatch in service_key\n"
              );
     goto Exit;
   }
@@ -288,14 +288,14 @@ osmt_register_service_with_full_key ( IN
   if( status != IB_SUCCESS )
   {
     osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmt_register_service_with_full_key: ERR 0364: "
-             "ib_query failed (%s).\n", ib_get_err_str( status ) );
+             "osmt_register_service_with_full_key: ERR 4A04: "
+             "ib_query failed (%s)\n", ib_get_err_str( status ) );
 
     if( status == IB_REMOTE_ERROR )
     {
       osm_log( &p_osmt->log, OSM_LOG_ERROR,
                "osmt_register_service_with_full_key: "
-               "Remote error = %s.\n",
+               "Remote error = %s\n",
                ib_get_mad_status_str( osm_madw_get_mad_ptr
                                       ( context.result.
                                         p_result_madw ) ) );
@@ -337,7 +337,7 @@ osmt_register_service_with_data( IN osmt
 
   osm_log( &p_osmt->log, OSM_LOG_INFO,
            "osmt_register_service_with_data: "
-           "Registering Service: name:%s id:0x%" PRIx64 ".\n",
+           "Registering service: name:%s id:0x%" PRIx64 "\n",
            service_name, cl_ntoh64(service_id));
 
   cl_memclr( &req, sizeof( req ) );
@@ -426,8 +426,8 @@ osmt_register_service_with_data( IN osmt
   if( status != IB_SUCCESS )
   {
     osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmt_register_service_with_data: ERR 0303: "
-             "ib_query failed (%s).\n", ib_get_err_str( status ) );
+             "osmt_register_service_with_data: ERR 4A05: "
+             "ib_query failed (%s)\n", ib_get_err_str( status ) );
     goto Exit;
   }
 
@@ -436,14 +436,14 @@ osmt_register_service_with_data( IN osmt
   if( status != IB_SUCCESS )
   {
     osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmt_register_service_with_data: ERR 0364: "
-             "ib_query failed (%s).\n", ib_get_err_str( status ) );
+             "osmt_register_service_with_data: ERR 4A06: "
+             "ib_query failed (%s)\n", ib_get_err_str( status ) );
 
     if( status == IB_REMOTE_ERROR )
     {
       osm_log( &p_osmt->log, OSM_LOG_ERROR,
                "osmt_register_service_with_data: "
-               "Remote error = %s.\n",
+               "Remote error = %s\n",
                ib_get_mad_status_str( osm_madw_get_mad_ptr
                                       ( context.result.
                                         p_result_madw ) ) );
@@ -464,7 +464,7 @@ osmt_register_service_with_data( IN osmt
     status = IB_REMOTE_ERROR;
     osm_log( &p_osmt->log, OSM_LOG_ERROR,
              "osmt_register_service_with_data: "
-             "Data mismatch in service_data8.\n"
+             "Data mismatch in service_data8\n"
              );
     goto Exit;
   }
@@ -499,7 +499,7 @@ osmt_get_service_by_id_and_name ( IN osm
   if( osm_log_is_active( &p_osmt->log, OSM_LOG_VERBOSE ) )
     osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
              "osmt_get_service_by_id_and_name: "
-             "Getting Service Record by id  0x%016" PRIx64 " and name :
%s\n",
+             "Getting service record: id:0x%016" PRIx64 " and
name:%s\n",
              cl_ntoh64(sid),sr_name);
 
   /*
@@ -509,26 +509,29 @@ osmt_get_service_by_id_and_name ( IN osm
    *
    * The query structures are locals.
    */
-  cl_memclr( &svc_rec, sizeof( svc_rec ) );
   cl_memclr( &req, sizeof( req ) );
   cl_memclr( &context, sizeof( context ) );
-  cl_memclr( &user, sizeof( user ) );
-  /* set the new service record fields */
-  cl_memclr(svc_rec.service_name, sizeof(svc_rec.service_name));
-  cl_memcpy(svc_rec.service_name, sr_name,
-            (strlen(sr_name)+1)*sizeof(char));
-  svc_rec.service_id = sid;
-  /* prepare the data used for this query */
+
   context.p_osmt = p_osmt;
+
+  /* prepare the data used for this query */
   req.query_type = OSMV_QUERY_USER_DEFINED;
   req.timeout_ms = p_osmt->opt.transaction_timeout;
   req.retry_cnt = p_osmt->opt.retry_count;
   req.flags = OSM_SA_FLAGS_SYNC;
   req.query_context = &context;
   req.pfn_query_cb = osmtest_query_res_cb;
-  req.p_query_input = &user;
   req.sm_key = 0;
 
+  cl_memclr( &svc_rec, sizeof( svc_rec ) );
+  cl_memclr( &user, sizeof( user ) );
+  /* set the new service record fields */
+  cl_memclr(svc_rec.service_name, sizeof(svc_rec.service_name));
+  cl_memcpy(svc_rec.service_name, sr_name,
+            (strlen(sr_name)+1)*sizeof(char));
+  svc_rec.service_id = sid;
+  req.p_query_input = &user;
+
   user.method = IB_MAD_METHOD_GET;
   user.attr_id = IB_MAD_ATTR_SERVICE_RECORD;
   user.comp_mask = IB_SR_COMPMASK_SID | IB_SR_COMPMASK_SNAME;
@@ -539,62 +542,73 @@ osmt_get_service_by_id_and_name ( IN osm
   if( status != IB_SUCCESS )
   {
     osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmt_get_service_by_id_and_name: ERR 0365: "
-             "ib_query failed (%s).\n", ib_get_err_str( status ) );
+             "osmt_get_service_by_id_and_name: ERR 4A07: "
+             "ib_query failed (%s)\n", ib_get_err_str( status ) );
     goto Exit;
   }
 
   status = context.result.status;
+  num_recs =  context.result.result_cnt;
 
   if( status != IB_SUCCESS )
   {
-    num_recs = 0;
-    if (status != IB_INVALID_PARAMETER)
-    {
-      osm_log( &p_osmt->log, OSM_LOG_ERROR,
-               "osmt_get_service_by_id_and_name: ERR 0370: "
-               "ib_query failed (%s).\n", ib_get_err_str( status ) );
-    }
+    char mad_stat_err[256];
+    /* If the failure is due to IB_SA_MAD_STATUS_NO_RECORDS and rec_num
is 0,
+        then this is fine. */
     if( status == IB_REMOTE_ERROR )
+      strcpy(mad_stat_err, ib_get_mad_status_str( 
+        osm_madw_get_mad_ptr(context.result.p_result_madw) ) );
+    else
+      strcpy(mad_stat_err, ib_get_err_str(status) );
+    if( status == IB_REMOTE_ERROR && 
+        !strcmp(mad_stat_err, "IB_SA_MAD_STATUS_NO_RECORDS") &&
+        rec_num == 0 )
     {
       osm_log( &p_osmt->log, OSM_LOG_ERROR,
                "osmt_get_service_by_id_and_name: "
-               "Remote error = %s.\n",
-               ib_get_mad_status_str( osm_madw_get_mad_ptr
-                                      ( context.result.
-                                        p_result_madw ) ) );
-    }
-    goto Exit;
+               "IS EXPECTED ERROR ^^^^\n");
+      status = IB_SUCCESS;
   }
   else
   {
-    num_recs =  context.result.result_cnt;
+      osm_log( &p_osmt->log, OSM_LOG_ERROR,
+               "osmt_get_service_by_id_and_name: ERR 4A08: "
+               "Query failed:%s (%s)\n",
+               ib_get_err_str(status),
+               mad_stat_err );
+      goto Exit;
+    }
   }
 
   if ( num_recs != rec_num )
   {
     osm_log( &p_osmt->log, OSM_LOG_ERROR,
              "osmt_get_service_by_id_and_name: "
-             "Unmatched record number, Expeceted : %d, Got : %d.\n",
+             "Unmatched number of records: expeceted:%d,
received:%d\n",
              rec_num, num_recs);
     status = IB_REMOTE_ERROR;
     goto Exit;
   }
 
   p_rec = osmv_get_query_svc_rec( context.result.p_result_madw, 0 );
+  *p_out_rec = *p_rec;
+
+  if (num_recs)
+  {
   osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
            "osmt_get_service_by_id_and_name: "
-           "Found Service Record by Name:%s ID:0x%016" PRIx64 ".\n",
+             "Found service record: name:%s id:0x%016" PRIx64 "\n",
            p_rec->service_name, cl_ntoh64(p_rec->service_id));
 
   osm_dump_service_record(&p_osmt->log, p_rec, OSM_LOG_DEBUG);
-  *p_out_rec = *p_rec;
+  }
 
  Exit:
   osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
            "osmt_get_service_by_id_and_name: "
-           "Expected num of records is : %d, Found number of records :
%d\n",
-           rec_num,num_recs);
+           "Expected and found $d records\n",
+           rec_num );
+
   if( context.result.p_result_madw != NULL )
   {
     osm_mad_pool_put( &p_osmt->mad_pool, context.result.p_result_madw
);
@@ -623,7 +637,7 @@ osmt_get_service_by_id ( IN osmtest_t * 
   if( osm_log_is_active( &p_osmt->log, OSM_LOG_VERBOSE ) )
     osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
              "osmt_get_service_by_id: "
-             "Getting Service Record by id  0x%016" PRIx64 "\n",
+             "Getting service record: id:0x%016" PRIx64 "\n",
              cl_ntoh64(sid));
 
   /*
@@ -633,23 +647,26 @@ osmt_get_service_by_id ( IN osmtest_t * 
    *
    * The query structures are locals.
    */
-  cl_memclr( &svc_rec, sizeof( svc_rec ) );
   cl_memclr( &req, sizeof( req ) );
   cl_memclr( &context, sizeof( context ) );
-  cl_memclr( &user, sizeof( user ) );
-  /* set the new service record fields */
-  svc_rec.service_id = sid;
-  /* prepare the data used for this query */
+
   context.p_osmt = p_osmt;
+
+  /* prepare the data used for this query */
   req.query_type = OSMV_QUERY_USER_DEFINED;
   req.timeout_ms = p_osmt->opt.transaction_timeout;
   req.retry_cnt = p_osmt->opt.retry_count;
   req.flags = OSM_SA_FLAGS_SYNC;
   req.query_context = &context;
   req.pfn_query_cb = osmtest_query_res_cb;
-  req.p_query_input = &user;
   req.sm_key = 0;
 
+  cl_memclr( &svc_rec, sizeof( svc_rec ) );
+  cl_memclr( &user, sizeof( user ) );
+  /* set the new service record fields */
+  svc_rec.service_id = sid;
+  req.p_query_input = &user;
+
   user.method = IB_MAD_METHOD_GET;
   user.attr_id = IB_MAD_ATTR_SERVICE_RECORD;
   user.comp_mask = IB_SR_COMPMASK_SID;
@@ -660,62 +677,74 @@ osmt_get_service_by_id ( IN osmtest_t * 
   if( status != IB_SUCCESS )
   {
     osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmt_get_service_by_id: ERR 0365: "
-             "ib_query failed (%s).\n", ib_get_err_str( status ) );
+             "osmt_get_service_by_id: ERR 4A09: "
+             "ib_query failed (%s)\n", ib_get_err_str( status ) );
     goto Exit;
   }
 
   status = context.result.status;
+  num_recs =  context.result.result_cnt;
 
   if( status != IB_SUCCESS )
   {
-    num_recs = 0;
-    if (status != IB_INVALID_PARAMETER)
-    {
-      osm_log( &p_osmt->log, OSM_LOG_ERROR,
-               "osmt_get_service_by_id: ERR 0370: "
-               "ib_query failed (%s).\n", ib_get_err_str( status ) );
-    }
+    char mad_stat_err[256];
+    /* If the failure is due to IB_SA_MAD_STATUS_NO_RECORDS and rec_num
is 0,
+        then this is fine. */
     if( status == IB_REMOTE_ERROR )
+      strcpy(mad_stat_err, ib_get_mad_status_str( 
+        osm_madw_get_mad_ptr(context.result.p_result_madw) ) );
+    else
+      strcpy(mad_stat_err, ib_get_err_str(status) );
+
+    if( status == IB_REMOTE_ERROR && 
+        !strcmp(mad_stat_err, "IB_SA_MAD_STATUS_NO_RECORDS") &&
+        rec_num == 0 )
     {
       osm_log( &p_osmt->log, OSM_LOG_ERROR,
                "osmt_get_service_by_id: "
-               "Remote error = %s.\n",
-               ib_get_mad_status_str( osm_madw_get_mad_ptr
-                                      ( context.result.
-                                        p_result_madw ) ) );
-    }
-    goto Exit;
+               "IS EXPECTED ERROR ^^^^\n");
+      status = IB_SUCCESS;
   }
   else
   {
-    num_recs =  context.result.result_cnt;
+      osm_log( &p_osmt->log, OSM_LOG_ERROR,
+               "osmt_get_service_by_id: ERR 4A0A: "
+               "Query failed:%s (%s)\n",
+               ib_get_err_str(status),
+               mad_stat_err );
+      goto Exit;
+    }
   }
 
   if ( num_recs != rec_num )
   {
     osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmt_get_service_by_id: "
-             "Unmatched record number; Expected : %d, Got : %d.\n",
+             "osmt_get_service_by_id: ERR 4A0B: "
+             "Unmatched number of records: expected:%d received:%d\n",
              rec_num, num_recs);
     status = IB_REMOTE_ERROR;
     goto Exit;
   }
 
   p_rec = osmv_get_query_svc_rec( context.result.p_result_madw, 0 );
+  *p_out_rec = *p_rec;
+
+  if (num_recs)
+  {
   osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
            "osmt_get_service_by_id: "
-           "Found Service Record by Name:%s ID:0x%016" PRIx64 ".\n",
+             "Found service record: name:%s id:0x%016" PRIx64 "\n",
            p_rec->service_name, cl_ntoh64(p_rec->service_id));
 
   osm_dump_service_record(&p_osmt->log, p_rec, OSM_LOG_DEBUG);
-  *p_out_rec = *p_rec;
+  }
 
  Exit:
   osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
            "osmt_get_service_by_id: "
-           "Expected num of records is : %d, Found number of records :
%d\n",
-           rec_num,num_recs);
+           "Expected and found %d records\n",
+           rec_num );
+
   if( context.result.p_result_madw != NULL )
   {
     osm_mad_pool_put( &p_osmt->mad_pool, context.result.p_result_madw
);
@@ -737,22 +766,25 @@ osmt_get_service_by_name_and_key ( IN os
   osmtest_req_context_t context;
   osmv_query_req_t req;
   ib_service_record_t svc_rec,*p_rec;
-  uint32_t num_recs = 0;
+  uint32_t num_recs = 0, i;
   osmv_user_query_t user;
 
   OSM_LOG_ENTER( &p_osmt->log, osmt_get_service_by_name_and_key );
 
   if( osm_log_is_active( &p_osmt->log, OSM_LOG_VERBOSE ) )
   {
-    uint8_t i;
+    char buf_service_key[33];
+    
+    sprintf(buf_service_key,
+
"0x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
+            skey[0], skey[1], skey[2], skey[3], skey[4], skey[5],
skey[6], skey[7],
+            skey[8], skey[9], skey[10], skey[11], skey[12], skey[13],
skey[14],
+            skey[15]);
+    
     osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
              "osmt_get_service_by_name_and_key: "
-             "Getting Service Record by Name and Key :%s.\n",
-             sr_name);
-    for (i=0 ; i<=15 ; i++)
-      osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
-               "Service Key[%u] = %u\n",
-               i,skey[i]);
+             "Getting service record: name:%s and key:%s\n",
+             sr_name, buf_service_key );
   }
 
   /*
@@ -762,92 +794,108 @@ osmt_get_service_by_name_and_key ( IN os
    *
    * The query structures are locals.
    */
-  cl_memclr( &svc_rec, sizeof( svc_rec ) );
   cl_memclr( &req, sizeof( req ) );
   cl_memclr( &context, sizeof( context ) );
-  cl_memclr( &user, sizeof( user ) );
-  /* set the new service record fields */
-  cl_memclr(svc_rec.service_name, sizeof(svc_rec.service_name));
-  cl_memcpy(svc_rec.service_name, sr_name,
-            (strlen(sr_name)+1)*sizeof(char));
 
-  /* prepare the data used for this query */
   context.p_osmt = p_osmt;
+
+  /* prepare the data used for this query */
   req.query_type = OSMV_QUERY_USER_DEFINED;
   req.timeout_ms = p_osmt->opt.transaction_timeout;
   req.retry_cnt = p_osmt->opt.retry_count;
   req.flags = OSM_SA_FLAGS_SYNC;
   req.query_context = &context;
   req.pfn_query_cb = osmtest_query_res_cb;
-  req.p_query_input = &user;
   req.sm_key = 0;
 
+  cl_memclr( &svc_rec, sizeof( svc_rec ) );
+  cl_memclr( &user, sizeof( user ) );
+  /* set the new service record fields */
+  cl_memclr(svc_rec.service_name, sizeof(svc_rec.service_name));
+  cl_memcpy(svc_rec.service_name, sr_name,
+            (strlen(sr_name)+1)*sizeof(char));
+  for (i=0 ; i<=15 ; i++)
+    svc_rec.service_key[i] = skey[i];
+
+  req.p_query_input = &user;
+
   user.method = IB_MAD_METHOD_GET;
   user.attr_id = IB_MAD_ATTR_SERVICE_RECORD;
   user.comp_mask = IB_SR_COMPMASK_SNAME | IB_SR_COMPMASK_SKEY;
   user.attr_offset = ib_get_attr_offset( sizeof( ib_service_record_t )
);
   user.p_attr = &svc_rec;
-
   status = osmv_query_sa( p_osmt->h_bind, &req );
   if( status != IB_SUCCESS )
   {
     osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmt_get_service_by_name_and_key: ERR 0365: "
-             "ib_query failed (%s).\n", ib_get_err_str( status ) );
+             "osmt_get_service_by_name_and_key: ERR 4A0C: "
+             "ib_query failed (%s)\n", ib_get_err_str( status ) );
     goto Exit;
   }
 
   status = context.result.status;
+  num_recs =  context.result.result_cnt;
 
   if( status != IB_SUCCESS )
   {
-    num_recs = 0;
-    if (status != IB_INVALID_PARAMETER)
-    {
-      osm_log( &p_osmt->log, OSM_LOG_ERROR,
-               "osmt_get_service_by_name_and_key: ERR 0370: "
-               "ib_query failed (%s).\n", ib_get_err_str( status ) );
-    }
+    char mad_stat_err[256];
+    /* If the failure is due to IB_SA_MAD_STATUS_NO_RECORDS and rec_num
is 0,
+        then this is fine. */
     if( status == IB_REMOTE_ERROR )
+      strcpy(mad_stat_err, ib_get_mad_status_str( 
+        osm_madw_get_mad_ptr(context.result.p_result_madw) ) );
+    else
+      strcpy(mad_stat_err, ib_get_err_str(status) );
+
+    if( status == IB_REMOTE_ERROR && 
+        !strcmp(mad_stat_err, "IB_SA_MAD_STATUS_NO_RECORDS") &&
+        rec_num == 0 )
     {
       osm_log( &p_osmt->log, OSM_LOG_ERROR,
                "osmt_get_service_by_name_and_key: "
-               "Remote error = %s.\n",
-               ib_get_mad_status_str( osm_madw_get_mad_ptr
-                                      ( context.result.
-                                        p_result_madw ) ) );
-    }
-    goto Exit;
+               "IS EXPECTED ERROR ^^^^\n");
+      status = IB_SUCCESS;
   }
   else
   {
-    num_recs =  context.result.result_cnt;
+      osm_log( &p_osmt->log, OSM_LOG_ERROR,
+               "osmt_get_service_by_name_and_key: ERR 4A0D: "
+               "Query failed:%s (%s)\n",
+               ib_get_err_str(status),
+               mad_stat_err );
+      goto Exit;
+    }
   }
 
   if ( num_recs != rec_num )
   {
     osm_log( &p_osmt->log, OSM_LOG_ERROR,
              "osmt_get_service_by_name_and_key: "
-             "Unmatched record number, Expected : %d, Got : %d.\n",
+             "Unmatched number of records: expected:%d, received:%d\n",
              rec_num, num_recs);
     status = IB_REMOTE_ERROR;
     goto Exit;
   }
 
   p_rec = osmv_get_query_svc_rec( context.result.p_result_madw, 0 );
+  *p_out_rec = *p_rec;
+
+  if ( num_recs )
+  {
   osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
            "osmt_get_service_by_name_and_key: "
-           "Found Service Record by Name:%s ID:0x%016" PRIx64 ".\n",
+             "Found service record: name:%s id:0x%016" PRIx64 "\n",
            sr_name, cl_ntoh64(p_rec->service_id));
 
   osm_dump_service_record(&p_osmt->log, p_rec, OSM_LOG_DEBUG);
-  *p_out_rec = *p_rec;
+  }
 
  Exit:
   osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
            "osmt_get_service_by_name_and_key: "
-           "Expected num of records is : %d, Found number of records :
%d\n",
-           rec_num,num_recs);
+           "Expected and found %d records\n",
+           rec_num );
+
   if( context.result.p_result_madw != NULL )
   {
     osm_mad_pool_put( &p_osmt->mad_pool, context.result.p_result_madw
);
@@ -874,12 +922,10 @@ osmt_get_service_by_name( IN osmtest_t *
   OSM_LOG_ENTER( &p_osmt->log, osmt_get_service_by_name );
 
   if( osm_log_is_active( &p_osmt->log, OSM_LOG_VERBOSE ) )
-  {
     osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
              "osmt_get_service_by_name: "
-             "Getting Service Record by Name:%s.\n",
+             "Getting service record: name:%s\n",
              sr_name);
-  }
 
   /*
    * Do a blocking query for this record in the subnet.
@@ -893,78 +939,90 @@ osmt_get_service_by_name( IN osmtest_t *
 
   context.p_osmt = p_osmt;
 
+  /* prepare the data used for this query */
   req.query_type = OSMV_QUERY_SVC_REC_BY_NAME;
   req.timeout_ms = p_osmt->opt.transaction_timeout;
   req.retry_cnt = p_osmt->opt.retry_count;
   req.flags = OSM_SA_FLAGS_SYNC;
   req.query_context = &context;
   req.pfn_query_cb = osmtest_query_res_cb;
+  req.sm_key = 0;
+
   cl_memclr(service_name, sizeof(service_name));
   cl_memcpy(service_name, sr_name, (strlen(sr_name)+1)*sizeof(char));
   req.p_query_input = service_name;
-  req.sm_key = 0;
 
   status = osmv_query_sa( p_osmt->h_bind, &req );
   if( status != IB_SUCCESS )
   {
     osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmt_get_service_by_name: ERR 0365: "
-             "ib_query failed (%s).\n", ib_get_err_str( status ) );
+             "osmt_get_service_by_name: ERR 4A0E: "
+             "ib_query failed (%s)\n", ib_get_err_str( status ) );
     goto Exit;
   }
 
   status = context.result.status;
+  num_recs =  context.result.result_cnt;
 
   if( status != IB_SUCCESS )
   {
-    /*  The context struct is not init OR result with illegal number of
records */
-    num_recs = 0;
-    if (status != IB_INVALID_PARAMETER)
-    {
-      osm_log( &p_osmt->log, OSM_LOG_ERROR,
-               "osmt_get_service_by_name: ERR 0370: "
-               "ib_query failed (%s).\n", ib_get_err_str( status ) );
-    }
+    char mad_stat_err[256];
+    /*  If the failure is due to IB_SA_MAD_STATUS_NO_RECORDS and
rec_num is 0,
+        then this is fine. */
     if( status == IB_REMOTE_ERROR )
+      strcpy(mad_stat_err, ib_get_mad_status_str( 
+        osm_madw_get_mad_ptr(context.result.p_result_madw) ) );
+    else
+      strcpy(mad_stat_err, ib_get_err_str(status) );
+
+    if( status == IB_REMOTE_ERROR && 
+        !strcmp(mad_stat_err, "IB_SA_MAD_STATUS_NO_RECORDS") &&
+        rec_num == 0 )
     {
       osm_log( &p_osmt->log, OSM_LOG_ERROR,
                "osmt_get_service_by_name: "
-               "Remote error = %s.\n",
-               ib_get_mad_status_str( osm_madw_get_mad_ptr
-                                      ( context.result.
-                                        p_result_madw ) ) );
-    }
-    goto Exit;
+               "IS EXPECTED ERROR ^^^^\n");
+      status = IB_SUCCESS;
   }
   else
   {
-    num_recs =  context.result.result_cnt;
+      osm_log( &p_osmt->log, OSM_LOG_ERROR,
+               "osmt_get_service_by_name: ERR 4A0F: "
+               "Query failed:%s (%s)\n",
+               ib_get_err_str(status),
+               mad_stat_err );
+      goto Exit;
+    }
   }
 
   if ( num_recs != rec_num )
   {
     osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmt_get_service_by_name: "
-             "Unmatched record number, Expeceted : %d, Got : %u.\n",
+             "osmt_get_service_by_name: ERR 4A10: "
+             "Unmatched number of records: expected:%d, received:%u\n",
              rec_num, num_recs);
     status = IB_REMOTE_ERROR;
     goto Exit;
   }
 
   p_rec = osmv_get_query_svc_rec( context.result.p_result_madw, 0 );
+  *p_out_rec = *p_rec;
+
+  if (num_recs)
+  {
   osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
            "osmt_get_service_by_name: "
-           "Found Service Record by Name:%s ID:0x%016" PRIx64 ".\n",
+             "Found service record: name:%s id:0x%016" PRIx64 "\n",
            sr_name, cl_ntoh64(p_rec->service_id));
 
   osm_dump_service_record(&p_osmt->log, p_rec, OSM_LOG_DEBUG);
-  *p_out_rec = *p_rec;
+  }
 
  Exit:
   osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
            "osmt_get_service_by_name: "
-           "Expected num of records is : %d, Found number of records :
%u\n",
-           rec_num,num_recs);
+           "Expected and found %d records\n",
+           rec_num );
 
   if( context.result.p_result_madw != NULL )
   {
@@ -1002,7 +1060,7 @@ osmt_get_all_services_and_check_names( I
   {
     osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
              "osmt_get_all_services_and_check_names: "
-             "Getting All Service Records\n");
+             "Getting all service records\n");
   }
   /*
    * Do a blocking query for this record in the subnet.
@@ -1028,8 +1086,8 @@ osmt_get_all_services_and_check_names( I
   if( status != IB_SUCCESS )
   {
     osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmt_get_all_services_and_check_names: ERR 0371: "
-             "ib_query failed (%s).\n", ib_get_err_str( status ) );
+             "osmt_get_all_services_and_check_names: ERR 4A12: "
+             "ib_query failed (%s)\n", ib_get_err_str( status ) );
     goto Exit;
   }
 
@@ -1040,14 +1098,14 @@ osmt_get_all_services_and_check_names( I
     if (status != IB_INVALID_PARAMETER)
     {
       osm_log( &p_osmt->log, OSM_LOG_ERROR,
-               "osmt_get_all_services_and_check_names: ERR 0372: "
-               "ib_query failed (%s).\n", ib_get_err_str( status ) );
+               "osmt_get_all_services_and_check_names: ERR 4A13: "
+               "ib_query failed (%s)\n", ib_get_err_str( status ) );
     }
     if( status == IB_REMOTE_ERROR )
     {
       osm_log( &p_osmt->log, OSM_LOG_ERROR,
                "osmt_get_all_services_and_check_names: "
-               "Remote error = %s.\n",
+               "Remote error = %s\n",
                ib_get_mad_status_str( osm_madw_get_mad_ptr
                                       ( context.result.
                                         p_result_madw ) ) );
@@ -1058,14 +1116,14 @@ osmt_get_all_services_and_check_names( I
   num_recs = context.result.result_cnt;
   osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
              "osmt_get_all_services_and_check_names: "
-             "Received %u records.\n", num_recs );
+             "Received %u records\n", num_recs );
     
   for( i = 0; i < num_recs; i++ )
     {
       p_rec = osmv_get_query_svc_rec( context.result.p_result_madw, i
);
       osm_log( &p_osmt->log, OSM_LOG_VERBOSE,
                "osmt_get_all_services_and_check_names: "
-               "Found Service Record by Name:%s ID:0x%016" PRIx64
".\n",
+               "Found service record: name:%s id:0x%016" PRIx64 "\n",
                p_rec->service_name, cl_ntoh64(p_rec->service_id));
       osm_dump_service_record(&p_osmt->log, p_rec, OSM_LOG_VERBOSE);
       for ( j = 0; j < num_of_valid_names; j++) 
@@ -1091,8 +1149,8 @@ osmt_get_all_services_and_check_names( I
       if (p_checked_names[j] == 0) 
       {
           osm_log( &p_osmt->log, OSM_LOG_ERROR,
-                   "osmt_get_all_services_and_check_names: ERR 0377: "
-                   "Missing Valid Service
Name:%s\n",p_valid_service_names_arr[j]);
+                   "osmt_get_all_services_and_check_names: ERR 4A14: "
+                   "Missing valid service:
name:%s\n",p_valid_service_names_arr[j]);
           status = IB_ERROR;
           goto Exit;
       }
@@ -1124,7 +1182,7 @@ osmt_delete_service_by_name(IN osmtest_t
 
   osm_log( &p_osmt->log, OSM_LOG_INFO,
            "osmt_delete_service_by_name: "
-           "Trying to Delete Service: Name:%s.\n",
+           "Trying to Delete service name:%s\n",
            sr_name);
 
   cl_memclr( &svc_rec, sizeof( svc_rec ) );
@@ -1132,17 +1190,10 @@ osmt_delete_service_by_name(IN osmtest_t
   status = osmt_get_service_by_name(p_osmt, sr_name,rec_num, &svc_rec);
   if (status != IB_SUCCESS)
   {
-      if (IsServiceExist) 
           osm_log( &p_osmt->log, OSM_LOG_ERROR,
-                 "osmt_delete_service_by_name: ERR 001 "
-                 "Nothing to delete - failed to find service by name:
%s \n", sr_name);
-      else
-      {
-          osm_log( &p_osmt->log, OSM_LOG_INFO,
-                 "osmt_delete_service_by_name: "
-                 "Record should not exist, i.e. BAD flow\n");
-          status = IB_SUCCESS;
-      }
+             "osmt_delete_service_by_name: ERR 4A15: "
+             "Failed to get service: name:%s\n",
+             sr_name );
       goto ExitNoDel;
   }
 
@@ -1175,29 +1226,57 @@ osmt_delete_service_by_name(IN osmtest_t
   if( status != IB_SUCCESS )
   {
     osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmt_delete_service_by_name: ERR 0373: "
-             "ib_query failed (%s).\n", ib_get_err_str( status ) );
+             "osmt_delete_service_by_name: ERR 4A16: "
+             "ib_query failed (%s)\n", ib_get_err_str( status ) );
     goto Exit;
   }
 
   status = context.result.status;
-
+  if ( IsServiceExist )
+  {
+    /* If IsServiceExist = 1 then we should succeed here */
   if( status != IB_SUCCESS )
   {
     osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmt_delete_service_by_name: ERR 0374: "
-             "ib_query failed (%s).\n", ib_get_err_str( status ) );
+               "osmt_delete_service_by_name: ERR 4A17: "
+               "ib_query failed (%s)\n", ib_get_err_str( status ) );
 
     if( status == IB_REMOTE_ERROR )
     {
       osm_log( &p_osmt->log, OSM_LOG_ERROR,
-               "osmt_delete_service_by_name: "
-               "Remote error = %s.\n",
+                 "osmt_delete_service_by_name: ERR 4A18: "
+                 "Remote error = %s\n",
                ib_get_mad_status_str( osm_madw_get_mad_ptr
                                       ( context.result.
                                         p_result_madw ) ) );
     }
-    goto Exit;
+    }
+  }
+  else
+  {
+    /* If IsServiceExist = 0 then we should fail here */
+    if ( status == IB_SUCCESS )
+    {
+      osm_log( &p_osmt->log, OSM_LOG_ERROR,
+               "osmt_delete_service_by_name: ERR 4A19: "
+               "Succeeded to delete service:%s which "
+               "shouldn't exist", 
+               sr_name );
+      status = IB_ERROR;
+    }
+    else
+    {
+      /* The deletion should have failed, since the service_name
+         shouldn't exist. */
+      osm_log( &p_osmt->log, OSM_LOG_ERROR,
+               "osmt_run_service_records_flow: "
+               "IS EXPECTED ERROR ^^^^\n");
+      osm_log( &p_osmt->log, OSM_LOG_INFO,
+               "osmt_delete_service_by_name: "
+               "Failed to delete service_name:%s\n",
+               sr_name );
+      status = IB_SUCCESS;
+    }      
   }
 
  Exit:
@@ -1362,144 +1441,256 @@ osmt_run_service_records_flow( IN osmtes
   /* Let OpenSM handle it */
   usleep(100);
 
+  /* Make sure service_name[0] exists */
   status = osmt_get_service_by_name(p_osmt,
                                     (char*)service_name[0],1,
&srv_rec);
   if (status != IB_SUCCESS)
   {
+    osm_log( &p_osmt->log, OSM_LOG_ERROR,
+             "osmt_run_service_records_flow: ERR 4A1A: "
+             "Fail to find service: name:%s\n",
+             (char*)service_name[0] );
+    status = IB_ERROR;
     goto Exit;
   }
 
+  /* Make sure service_name[1] exists */
   status = osmt_get_service_by_name(p_osmt,
                                     (char*)service_name[1],1,
&srv_rec);
   if (status != IB_SUCCESS)
   {
+    osm_log( &p_osmt->log, OSM_LOG_ERROR,
+             "osmt_run_service_records_flow: ERR 4A1B: "
+             "Fail to find service: name:%s\n",
+             (char*)service_name[1] );
+    status = IB_ERROR;
     goto Exit;
   }
 
+  /* Make sure service_name[2] exists */
   status = osmt_get_service_by_name(p_osmt,
                                     (char*)service_name[2],1,
&srv_rec);
   if (status != IB_SUCCESS)
   {
+     osm_log( &p_osmt->log, OSM_LOG_ERROR,
+             "osmt_run_service_records_flow: ERR 4A1C: "
+             "Fail to find service: name:%s\n",
+             (char*)service_name[2] );
+    status = IB_ERROR;
     goto Exit;
   }
 
-  /*  Try to get osmt.srvc.4 b4 (there should be 1 record) and after 10
sec - It should be deleted */
+  /* Make sure service_name[3] exists. */
+  /* After 10 seconds the service should not exist: service_lease = 10
*/
   status = osmt_get_service_by_name(p_osmt,
                                     (char*)service_name[3],1,
&srv_rec);
   if (status != IB_SUCCESS)
   {
+     osm_log( &p_osmt->log, OSM_LOG_ERROR,
+             "osmt_run_service_records_flow: ERR 4A1D: "
+             "Fail to find service: name:%s\n",
+             (char*)service_name[3] );
+    status = IB_ERROR;
     goto Exit;
   }
+
   sleep(10);
+
   status = osmt_get_service_by_name(p_osmt,
                                     (char*)service_name[3],0,
&srv_rec);
-  if (status == IB_SUCCESS)
+  if (status != IB_SUCCESS)
   {
+    osm_log( &p_osmt->log, OSM_LOG_ERROR,
+             "osmt_run_service_records_flow: ERR 4A1E: "
+             "Found service: name:%s that should have been "
+             "deleted due to service lease expiring\n",
+             (char*)service_name[3] );
+    status = IB_ERROR;
     goto Exit;
   }
-  /*  Check that for the current Service ID only one record exists */
+
+  /*  Check that for service: id[5] only one record exists */
   status = osmt_get_service_by_id(p_osmt, 1,
cl_ntoh64(id[5]),&srv_rec);
   if (status != IB_SUCCESS)
   {
+     osm_log( &p_osmt->log, OSM_LOG_ERROR,
+             "osmt_run_service_records_flow: ERR 4A1F: "
+             "Found number of records!=1 for "
+              "service: id:0x%016" PRIx64 "\n",
+              id[5] );
+     status = IB_ERROR;
     goto Exit;
   }
 
-  /*  Bad Flow of Get with invalid Service ID */
+  /*  Bad Flow of Get with invalid Service ID: id[7] */
   status = osmt_get_service_by_id(p_osmt, 0,cl_ntoh64(id[7]),&srv_rec);
-  if (status == IB_SUCCESS)
+  if (status != IB_SUCCESS)
   {
+    osm_log( &p_osmt->log, OSM_LOG_ERROR,
+             "osmt_run_service_records_flow: ERR 4A20: "
+             "Found service: id:0x%016 " PRIx64 
+             "that is invalid\n",
+             id[7] );
+    status = IB_ERROR;
     goto Exit;
   }
-  /*  Check that for correct name and ID we get record set b4 */
+
+  /*  Check by both id and service name: id[0], service_name[0] */
   status = osmt_get_service_by_id_and_name(p_osmt, 1, cl_ntoh64(id[0]),
                                            (char*)service_name[0],
&srv_rec);
   if (status != IB_SUCCESS)
   {
+    osm_log( &p_osmt->log, OSM_LOG_ERROR,
+             "osmt_run_service_records_flow: ERR 4A21: "
+             "Fail to find service: id:0x%016 " PRIx64
+             "name:%s\n",
+             id[0],
+             (char*)service_name[0] );
+    status = IB_ERROR;
     goto Exit;
   }
+  
+  /*  Check by both id and service name: id[5], service_name[6] */
   status = osmt_get_service_by_id_and_name(p_osmt, 1, cl_ntoh64(id[5]),
                                            (char*)service_name[6],
&srv_rec);
   if (status != IB_SUCCESS)
   {
+    osm_log( &p_osmt->log, OSM_LOG_ERROR,
+             "osmt_run_service_records_flow: ERR 4A22: "
+             "Fail to find service: id:0x%016 " PRIx64
+             "name:%s\n",
+             id[5],
+             (char*)service_name[6] );
+    status = IB_ERROR;
     goto Exit;
   }
 
-  /* Bad Flow of Get with valid name and invalid ID */
+  /* Bad Flow of Get with invalid name(service_name[3]) and valid
ID(id[0]) */
   status = osmt_get_service_by_id_and_name(p_osmt, 0, cl_ntoh64(id[0]),
                                            (char*)service_name[3],
&srv_rec);
-  if (status == IB_SUCCESS)
+  if (status != IB_SUCCESS)
   {
+    osm_log( &p_osmt->log, OSM_LOG_ERROR,
+             "osmt_run_service_records_flow: ERR 4A23: "
+             "Found service: id:0x%016" PRIx64
+             "name:%s which is an invalid service\n",
+             id[0],
+             (char*)service_name[3] );
+    status = IB_ERROR;
     goto Exit;
   }
-  /*  Bad Flow of Get with unmatched name (exists but not with the
following ID) and valid ID */
+
+  /*  Bad Flow of Get with unmatched name(service_name[5]) and
id(id[3]) (both valid) */
   status = osmt_get_service_by_id_and_name(p_osmt, 0, cl_ntoh64(id[3]),
                                            (char*)service_name[5],
&srv_rec);
-  if (status == IB_SUCCESS)
+  if (status != IB_SUCCESS)
   {
+    osm_log( &p_osmt->log, OSM_LOG_ERROR,
+             "osmt_run_service_records_flow: ERR 4A24: "
+             "Found service: id:0x%016" PRIx64
+             "name:%s which is an invalid service\n",
+             id[3],
+             (char*)service_name[5] );
+    status = IB_ERROR;
     goto Exit;
   }
 
+  /* Bad Flow of Get with service name that doesn't exist
(service_name[4]) */
   status = osmt_get_service_by_name(p_osmt,
                                     (char*)service_name[4],0,
&srv_rec);
-  if (status == IB_SUCCESS)
+  if (status != IB_SUCCESS)
   {
+    osm_log( &p_osmt->log, OSM_LOG_ERROR,
+             "osmt_run_service_records_flow: ERR 4A25: "
+             "Found service: name:%s that shouldn't exist\n",
+             (char*)service_name[4] );
+    status = IB_ERROR;
     goto Exit;
   }
-  /*  Bad Flow : Check that getting osmt.srvc.6 brings no records since
another service has been updated with the same ID - osmt.srvc.7 */
+
+  /*  Bad Flow : Check that getting service_name[5] brings no records
since another service
+      has been updated with the same ID (service_name[6] */
   status = osmt_get_service_by_name(p_osmt,
                                     (char*)service_name[5],0,
&srv_rec);
-  if (status == IB_SUCCESS)
+  if (status != IB_SUCCESS)
   {
+    osm_log( &p_osmt->log, OSM_LOG_ERROR,
+             "osmt_run_service_records_flow: ERR 4A26: "
+             "Found service: name:%s which is an "
+             "invalid service\n",
+             (char*)service_name[5] );
+    status = IB_ERROR;
     goto Exit;
   }
-  /*  Check that getting osmt.srvc.7 by name ONLY is valid since we do
not support key&name association, also trusted queries */
+
+  /*  Check that getting service_name[6] by name ONLY is valid,
+      since we do not support key&name association, also trusted
queries */
   status = osmt_get_service_by_name(p_osmt,
                                     (char*)service_name[6],1,
&srv_rec);
   if (status != IB_SUCCESS)
   {
+    osm_log( &p_osmt->log, OSM_LOG_ERROR,
+             "osmt_run_service_records_flow: ERR 4A27: "
+             "Fail to find service: name:%s\n",
+             (char*)service_name[6] );
+    status = IB_ERROR;
     goto Exit;
   }
 
   /*  Test Service Key */
   cl_memclr(service_key,16*sizeof(uint8_t));
+
+  /* Check for service_name[5] with service_key=0 - the service
shouldn't
+     exist with this name. */
   status = osmt_get_service_by_name_and_key (p_osmt,
                                              (char*)service_name[5],
                                              0, service_key,&srv_rec);

-  if (status == IB_SUCCESS)
+  if (status != IB_SUCCESS)
   {
+    osm_log( &p_osmt->log, OSM_LOG_ERROR,
+             "osmt_run_service_records_flow: ERR 4A28: "
+             "Found service: name:%s key:0 which is an "
+             "invalid service (wrong name)\n",
+             (char*)service_name[5] );
+    status = IB_ERROR;
     goto Exit;
   }
-  else
-  {
-    status = IB_SUCCESS;
-  }
+
+  /* Check for service_name[6] with service_key=0 - the service should
+     exist with different key. */
   status = osmt_get_service_by_name_and_key (p_osmt,
                                              (char*)service_name[6],
                                              0, service_key,&srv_rec);
-  if (status == IB_SUCCESS)
+  if (status != IB_SUCCESS)
   {
+    osm_log( &p_osmt->log, OSM_LOG_ERROR,
+             "osmt_run_service_records_flow: ERR 4A29: "
+             "Found service: name:%s key:0 which is an "
+             "invalid service (wrong service_key)\n",
+             (char*)service_name[6] );
+    status = IB_ERROR;
     goto Exit;
   }
-  else
-  {
-    status = IB_SUCCESS;
-  }
       
+  /* check for service_name[6] with the correct service_key */
   for (i=0;i <= 15;i++) 
     service_key[i]=i + 1;
   status = osmt_get_service_by_name_and_key (p_osmt,
                                              (char*)service_name[6],
-                                             0, service_key,&srv_rec);
-  if (status == IB_SUCCESS)
+                                             1, service_key, &srv_rec);
+  if (status != IB_SUCCESS)
   {
+    osm_log( &p_osmt->log, OSM_LOG_ERROR,
+             "osmt_run_service_records_flow: ERR 4A2A: "
+             "Fail to find service: name:%s with "
+             "correct service key\n",
+             (char*)service_name[6] );
+    status = IB_ERROR;
     goto Exit;
   }
-  else
-  {
-    status = IB_SUCCESS;
-  }
 
 #ifdef VENDOR_RMPP_SUPPORT
+  /* These ar the only service_names which are valid */
 
cl_memcpy(&service_valid_names[0],&service_name[0],sizeof(uint8_t)*64);
 
cl_memcpy(&service_valid_names[1],&service_name[2],sizeof(uint8_t)*64);
 
cl_memcpy(&service_valid_names[2],&service_name[6],sizeof(uint8_t)*64);
@@ -1507,79 +1698,101 @@ osmt_run_service_records_flow( IN osmtes
   status =
osmt_get_all_services_and_check_names(p_osmt,service_valid_names,3,
&num_recs);
   if (status != IB_SUCCESS)
   {
+    osm_log( &p_osmt->log, OSM_LOG_ERROR,
+             "osmt_run_service_records_flow: ERR 4A2B: "
+             "Fail to find all services that should exist\n" );
+    status = IB_ERROR;
     goto Exit;
   }
 #endif
 
+  /* Delete service_name[0] */ 
   status = osmt_delete_service_by_name(p_osmt,1,
                                        (char*)service_name[0],1);
   if (status != IB_SUCCESS)
   {
+    osm_log( &p_osmt->log, OSM_LOG_ERROR,
+             "osmt_run_service_records_flow: ERR 4A2C: "
+             "Fail to delete service: name:%s\n",
+             (char*)service_name[0] );
+    status = IB_ERROR;
     goto Exit;
   }
 
+  /* Make sure deletion of service_name[0] succeeded */
   status = osmt_get_service_by_name(p_osmt,
-                                    (char*)service_name[0],1,
&srv_rec);
-  if (status == IB_SUCCESS)
+                                    (char*)service_name[0],0,
&srv_rec);
+  if (status != IB_SUCCESS)
   {
     osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmt_run_service_records_flow: ERR 001 "
-             "Expected not to find osmt.srvc.1 \n");
+             "osmt_run_service_records_flow: ERR 4A2D: "
+             "Found service: name:%s that was deleted\n",
+             (char*)service_name[0] );
     status = IB_ERROR;
     goto Exit;
   }
-  osm_log( &p_osmt->log, OSM_LOG_ERROR,
-           "osmt_run_service_records_flow: "
-           "IS EXPECTED ERR ^^^^\n");
-
-  sleep(3);
 
+  /* Make sure service_name[1] doesn't exist (expired service lease) */
   status = osmt_get_service_by_name(p_osmt,
-                                    (char*)service_name[1],1,
&srv_rec);
-  if (status == IB_SUCCESS)
+                                    (char*)service_name[1],0,
&srv_rec);
+  if (status != IB_SUCCESS)
   {
     osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmt_run_service_records_flow: ERR 001 "
-             "Expected not to find osmt.srvc.2 \n");
+             "osmt_run_service_records_flow: ERR 4A2E: "
+             "Found service: name:%s that should have expired\n",
+             (char*)service_name[1] );
     status = IB_ERROR;
     goto Exit;
   }
-  else
-  {
-    osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmt_run_service_records_flow: "
-             "IS EXPECTED ERR ^^^^\n");
-    status = IB_SUCCESS;
-  }
 
+  /* Make sure service_name[2] exists */
   status = osmt_get_service_by_name(p_osmt,
                                     (char*)service_name[2],1,
&srv_rec);
   if (status != IB_SUCCESS)
   {
     osm_log( &p_osmt->log, OSM_LOG_ERROR,
-             "osmt_run_service_records_flow: ERR 001 "
-             "Expected to find service osmt.srvc.3\n" );
+             "osmt_run_service_records_flow: ERR 4A2F: "
+             "Fail to find service: name:%s\n",
+             (char*)service_name[2] );
+    status = IB_ERROR;
     goto Exit;
   }
-  status = osmt_delete_service_by_name(p_osmt,1,
-                                       (char*)service_name[6],1);
+
+  /*  Bad Flow - try to delete non-existent service_name[5] */
+  status = osmt_delete_service_by_name(p_osmt,0,
+                                       (char*)service_name[5],0);
   if (status != IB_SUCCESS)
   {
+    osm_log( &p_osmt->log, OSM_LOG_ERROR,
+             "osmt_run_service_records_flow: ERR 4A30: "
+             "Succeed to delete non-existent service: name:%s\n",
+             (char*)service_name[5] );
+    status = IB_ERROR;
     goto Exit;
   }
 
-  /*  Bad Flow */
-  status = osmt_delete_service_by_name(p_osmt,0,
-                                       (char*)service_name[5],1);
-  if (status == IB_SUCCESS)
+  /* Delete service_name[2] */
+  status = osmt_delete_service_by_name(p_osmt,1,
+                                       (char*)service_name[2],1);
+  if (status != IB_SUCCESS)
   {
+    osm_log( &p_osmt->log, OSM_LOG_ERROR,
+             "osmt_run_service_records_flow: ERR 4A31: "
+             "Fail to delete service: name:%s\n",
+             (char*)service_name[2] );
+    status = IB_ERROR;
     goto Exit;
   }
 
+  /* Delete service_name[6] */
   status = osmt_delete_service_by_name(p_osmt,1,
-                                       (char*)service_name[2],1);
+                                       (char*)service_name[6],1);
   if (status != IB_SUCCESS)
   {
+    osm_log( &p_osmt->log, OSM_LOG_ERROR,
+             "osmt_run_service_records_flow: ERR 4A32: "
+             "Failed to delete service name:%s\n",
+             (char*)service_name[6] );
     goto Exit;
   }
 
Index: opensm/osm_sa_service_record.c
===================================================================
--- opensm/osm_sa_service_record.c	(revision 5403)
+++ opensm/osm_sa_service_record.c	(working copy)
@@ -798,6 +798,13 @@ osm_sr_rcv_process_get_method(
   p_recvd_service_rec =
     (ib_service_record_t*)ib_sa_mad_get_payload_ptr( p_sa_mad );
 
+  if( osm_log_is_active( p_rcv->p_log, OSM_LOG_DEBUG ) )
+  {
+    osm_dump_service_record( p_rcv->p_log,
+                             p_recvd_service_rec,
+                             OSM_LOG_DEBUG );
+  }
+
   cl_qlist_init(&sr_match_item.sr_list);
   sr_match_item.p_service_rec = p_recvd_service_rec;
   sr_match_item.comp_mask = p_sa_mad->comp_mask;



More information about the general mailing list