Close additional file descriptor in iblinkinfo in advance
PATCH 1/1 Close additional file descriptor in iblinkinfo in advance
From: Vladimir Koushnir <vladimirk-VPRAkNaXOzVWk0Htik3J/[email protected]>
Date: Tue, 14 Apr 2015 18:14:48 +0300
Additional file descriptor for SMP MADs should be closed before running ibnd_discover_fabric() to avoid parallel usage of two SMP file descriptors
--- src/iblinkinfo.c | 16 ++++++++++------ 1 files changed, 10 insertions(+), 6 deletions(-)
src/iblinkinfo.c +10 -6
@@ -594,6 +594,7 @@ int main(int argc, char **argv)ibnd_fabric_t *diff_fabric =NULL ;struct ibmad_port *ibmad_port;ib_portid_t port_id = {0 }; +uint8_t ni[IB_SMP_DATA_SIZE ] = {0 };int mgmt_classes[3 ] = {IB_SMI_CLASS ,IB_SMI_DIRECT_CLASS ,IB_SA_CLASS };
@@ -653,12 +654,20 @@ int main(int argc, char **argv) config.timeout_ms = ibd_timeout; } +if (!smp_query_via (ni, &port_id,IB_ATTR_NODE_INFO ,0 , + ibd_timeout, ibmad_port)){ +mad_rpc_close_port (ibmad_port); +fprintf (stderr, +"Failed to get local Node Info\n" ); +exit (1 ); + } config.flags = ibd_ibnetdisc_flags; config.mkey = ibd_mkey; node_name_map =open_node_name_map (node_name_map_file);if (dr_path && load_cache_file) { +mad_rpc_close_port (ibmad_port);fprintf (stderr,"Cannot specify cache and direct route path\n" );exit (1 ); }
@@ -678,6 +687,7 @@ int main(int argc, char **argv)IBWARN ("Failed to resolve %s; attempting full scan\n" , guid_str); } +mad_rpc_close_port (ibmad_port);if (diff_cache_file && !(diff_fabric =ibnd_load_fabric (diff_cache_file,0 )))
@@ -723,11 +733,6 @@ int main(int argc, char **argv)fprintf (stderr,"Failed to find port: %s\n" , guid_str); }else if (!all && dr_path) {ibnd_port_t *p =NULL ; -uint8_t ni[IB_SMP_DATA_SIZE ] = {0 }; - -if (!smp_query_via (ni, &port_id,IB_ATTR_NODE_INFO ,0 , - ibd_timeout, ibmad_port)) -return -1 ;mad_decode_field (ni,IB_NODE_PORT_GUID_F , &(guid)); p =ibnd_find_port_guid (fabric, guid);
@@ -758,6 +763,5 @@ int main(int argc, char **argv) close_port:close_node_name_map (node_name_map); -mad_rpc_close_port (ibmad_port);exit (rc); }
Signature · 6 lines
1.7.8.2 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 552FB794.7080503-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org
Quoted 8 lines · Hal Rosenstock
From: Vladimir Koushnir <vladimirk-VPRAkNaXOzVWk0Htik3J/[email protected]>
Date: Tue, 14 Apr 2015 18:14:48 +0300Additional file descriptor for SMP MADs should be closed before running
ibnd_discover_fabric()to avoid parallel usage of two SMP file descriptors
I'm not quite sure why but this patch breaks the DR processing of iblinkinfo.
Please test iblinkinfo -D <path>
I don't have the time to figure this out at the moment.
Ira
Quoted 67 lines
--- src/iblinkinfo.c | 16 ++++++++++------ 1 files changed, 10 insertions(+), 6 deletions(-)src/iblinkinfo.c +10
-6@@ -594,6 +594,7 @@ int main(int argc, char **argv)ibnd_fabric_t *diff_fabric =NULL ;struct ibmad_port *ibmad_port;ib_portid_t port_id = {0 }; +uint8_t ni[IB_SMP_DATA_SIZE ] = {0 };int mgmt_classes[3 ] = {IB_SMI_CLASS ,IB_SMI_DIRECT_CLASS ,IB_SA_CLASS };@@ -653,12 +654,20 @@ int main(int argc, char **argv) config.timeout_ms = ibd_timeout; } +if (!smp_query_via (ni, &port_id,IB_ATTR_NODE_INFO ,0 , + ibd_timeout, ibmad_port)){ +mad_rpc_close_port (ibmad_port); +fprintf (stderr, +"Failed to get local Node Info\n" ); +exit (1 ); + } config.flags = ibd_ibnetdisc_flags; config.mkey = ibd_mkey; node_name_map =open_node_name_map (node_name_map_file);if (dr_path && load_cache_file) { +mad_rpc_close_port (ibmad_port);fprintf (stderr,"Cannot specify cache and direct route path\n" );exit (1 ); }@@ -678,6 +687,7 @@ int main(int argc, char **argv)IBWARN ("Failed to resolve %s; attempting full scan\n" , guid_str); } +mad_rpc_close_port (ibmad_port);if (diff_cache_file && !(diff_fabric =ibnd_load_fabric (diff_cache_file,0 )))@@ -723,11 +733,6 @@ int main(int argc, char **argv)fprintf (stderr,"Failed to find port: %s\n" , guid_str); }else if (!all && dr_path) {ibnd_port_t *p =NULL ; -uint8_t ni[IB_SMP_DATA_SIZE ] = {0 }; - -if (!smp_query_via (ni, &port_id,IB_ATTR_NODE_INFO ,0 , - ibd_timeout, ibmad_port)) -return -1 ;mad_decode_field (ni,IB_NODE_PORT_GUID_F , &(guid)); p =ibnd_find_port_guid (fabric, guid);@@ -758,6 +763,5 @@ int main(int argc, char **argv) close_port:close_node_name_map (node_name_map); -mad_rpc_close_port (ibmad_port);exit (rc); }Signature · 1 line
1.7.8.2
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): [email protected]
A message that is not in the archive (sent off-list or not yet received): fx82yx4y90ielsvlcgq06v5k.1429713777113-2ueSQiBKiTY7tOexoI0I+QC/[email protected]
I may have incorrectly acked a patch on the list which I did not apply...
If so please ignore.
Sorry for the noise,
Ira
Quoted 93 lines
-----Original Message-----
From: Vladimir Koushnir [mailto:vladimirk-VPRAkNaXOzVWk0Htik3J/[email protected]]
Sent: Wednesday, April 22, 2015 7:43 AM
To: Weiny, Ira; Hal Rosenstock
Cc: [email protected]
Subject: Re: [PATCH infiniband-diags] Close additional file descriptor in iblinkinfo in advanceThanks for figuring this out.
I'll test on Sun and update."ira.weiny" <[email protected]> wrote:
Quoted 10 lines · Hal Rosenstock
From: Vladimir Koushnir <vladimirk-VPRAkNaXOzVWk0Htik3J/[email protected]>
Date: Tue, 14 Apr 2015 18:14:48 +0300Additional file descriptor for SMP MADs should be closed before running
ibnd_discover_fabric()to avoid parallel usage of two SMP file descriptorsI'm not quite sure why but this patch breaks the DR processing of iblinkinfo.
Please test iblinkinfo -D <path>
I don't have the time to figure this out at the moment.
Ira
Quoted 59 lines
--- src/iblinkinfo.c | 16 ++++++++++------ 1 files changed, 10 insertions(+), 6 deletions(-)src/iblinkinfo.c index renamed from src/iblinkinfo.c +0
-092ff3c6..9dcf698 100644
src/iblinkinfo.c +10
-6@@ -594,6 +594,7 @@ int main(int argc, char **argv)ibnd_fabric_t *diff_fabric =NULL ;struct ibmad_port *ibmad_port;ib_portid_t port_id = {0 }; +uint8_t ni[IB_SMP_DATA_SIZE ] = {0 };int mgmt_classes[3 ] = {IB_SMI_CLASS ,IB_SMI_DIRECT_CLASS ,IB_SA_CLASS };@@ -653,12 +654,20 @@ int main(int argc, char **argv) config.timeout_ms = ibd_timeout; } +if (!smp_query_via (ni, &port_id,IB_ATTR_NODE_INFO ,0 , + ibd_timeout, ibmad_port)){ +mad_rpc_close_port (ibmad_port); +fprintf (stderr, +"Failed to get local Node Info\n" ); +exit (1 ); + } config.flags = ibd_ibnetdisc_flags; config.mkey = ibd_mkey; node_name_map =open_node_name_map (node_name_map_file);if (dr_path && load_cache_file) { +mad_rpc_close_port (ibmad_port);fprintf (stderr,"Cannot specify cache and direct route path\n" );exit (1 ); }@@ -678,6 +687,7 @@ int main(int argc, char **argv)IBWARN ("Failed to resolve %s; attempting full scan\n" , guid_str); } +mad_rpc_close_port (ibmad_port);if (diff_cache_file && !(diff_fabric = ibnd_load_fabric(diff_cache_file, 0))) @@ -723,11 +733,6 @@ int main(int argc, char **argv)fprintf (stderr,"Failed to find port: %s\n" , guid_str); }else if (!all && dr_path) {ibnd_port_t *p =NULL ; -uint8_t ni[IB_SMP_DATA_SIZE ] = {0 }; - -if (!smp_query_via (ni, &port_id,IB_ATTR_NODE_INFO ,0 , - ibd_timeout, ibmad_port)) -return -1 ;mad_decode_field (ni,IB_NODE_PORT_GUID_F , &(guid)); p = ibnd_find_port_guid(fabric, guid); @@ -758,6 +763,5@@ int
main(int argc, char **argv)
Quoted 8 lines
Quoted 8 lines
close_port:close_node_name_map(node_name_map); - mad_rpc_close_port(ibmad_port); exit(rc);}
--
1.7.8.2
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 1/1 Close additional file descriptor in iblinkinfo in advance
In reply to a message not in the archiveFrom: Vladimir Koushnir <vladimirk-VPRAkNaXOzVWk0Htik3J/[email protected]>
Date: Tue, 14 Apr 2015 18:14:48 +0300
Additional file descriptor for SMP MADs should be closed before running ibnd_discover_fabric() to avoid parallel usage of two SMP file descriptors
--- src/iblinkinfo.c | 16 ++++++++++------ 1 files changed, 10 insertions(+), 6 deletions(-)
src/iblinkinfo.c +10 -6
@@ -594,6 +594,7 @@ int main(int argc, char **argv)ibnd_fabric_t *diff_fabric =NULL ;struct ibmad_port *ibmad_port;ib_portid_t port_id = {0 }; +uint8_t ni[IB_SMP_DATA_SIZE ] = {0 };int mgmt_classes[3 ] = {IB_SMI_CLASS ,IB_SMI_DIRECT_CLASS ,IB_SA_CLASS };
@@ -653,12 +654,20 @@ int main(int argc, char **argv) config.timeout_ms = ibd_timeout; } +if (!smp_query_via (ni, &port_id,IB_ATTR_NODE_INFO ,0 , + ibd_timeout, ibmad_port)){ +mad_rpc_close_port (ibmad_port); +fprintf (stderr, +"Failed to get local Node Info\n" ); +exit (1 ); + } config.flags = ibd_ibnetdisc_flags; config.mkey = ibd_mkey; node_name_map =open_node_name_map (node_name_map_file);if (dr_path && load_cache_file) { +mad_rpc_close_port (ibmad_port);fprintf (stderr,"Cannot specify cache and direct route path\n" );exit (1 ); }
@@ -678,6 +687,7 @@ int main(int argc, char **argv)IBWARN ("Failed to resolve %s; attempting full scan\n" , guid_str); } +mad_rpc_close_port (ibmad_port);if (diff_cache_file && !(diff_fabric =ibnd_load_fabric (diff_cache_file,0 )))
@@ -723,11 +733,6 @@ int main(int argc, char **argv)fprintf (stderr,"Failed to find port: %s\n" , guid_str); }else if (!all && dr_path) {ibnd_port_t *p =NULL ; -uint8_t ni[IB_SMP_DATA_SIZE ] = {0 }; - -if (!smp_query_via (ni, &port_id,IB_ATTR_NODE_INFO ,0 , - ibd_timeout, ibmad_port)) -return -1 ;mad_decode_field (ni,IB_NODE_PORT_GUID_F , &(guid)); p =ibnd_find_port_guid (fabric, guid);
@@ -758,6 +763,5 @@ int main(int argc, char **argv) close_port:close_node_name_map (node_name_map); -mad_rpc_close_port (ibmad_port);exit (rc); }
Signature · 6 lines
1.7.8.2 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 5550F731.9070005-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org
Quoted 25 lines · Hal Rosenstock
From: Vladimir Koushnir <vladimirk-VPRAkNaXOzVWk0Htik3J/[email protected]>
Date: Tue, 14 Apr 2015 18:14:48 +0300Additional file descriptor for SMP MADs should be closed before running
ibnd_discover_fabric()to avoid parallel usage of two SMP file descriptors--- src/iblinkinfo.c | 16 ++++++++++------ 1 files changed, 10 insertions(+), 6 deletions(-)src/iblinkinfo.c +1
-0@@ -594,6 +594,7 @@ int main(int argc, char **argv)ibnd_fabric_t *diff_fabric =NULL ;struct ibmad_port *ibmad_port;ib_portid_t port_id = {0 }; +uint8_t ni[IB_SMP_DATA_SIZE ] = {0 };int mgmt_classes[3 ] = {IB_SMI_CLASS ,IB_SMI_DIRECT_CLASS ,IB_SA_CLASS };
src/iblinkinfo.c int main(int argc, char **argv) · line 663
Quoted 10 lines
src/iblinkinfo.c +7
-0@@ -653,12 +654,20 @@ int main(int argc, char **argv) config.timeout_ms = ibd_timeout; } +if (!smp_query_via (ni, &port_id,IB_ATTR_NODE_INFO ,0 , + ibd_timeout, ibmad_port)){ +mad_rpc_close_port (ibmad_port); +fprintf (stderr, +"Failed to get local Node Info\n" ); +exit (1 ); + }
You can't do this here. This results in the Node Info being incorrect for a partial fabric DR query. For example,
[root@phcppriv12 sbin]# ./iblinkinfo -D 0,1,1
Failed to find port: 0,1,1
Please fix the DR query,
Ira
Quoted 40 lines
src/iblinkinfo.c +2
-6config.flags = ibd_ibnetdisc_flags; config.mkey = ibd_mkey; node_name_map =open_node_name_map (node_name_map_file);if (dr_path && load_cache_file) { +mad_rpc_close_port (ibmad_port);fprintf (stderr,"Cannot specify cache and direct route path\n" );exit (1 ); }@@ -678,6 +687,7 @@ int main(int argc, char **argv)IBWARN ("Failed to resolve %s; attempting full scan\n" , guid_str); } +mad_rpc_close_port (ibmad_port);if (diff_cache_file && !(diff_fabric =ibnd_load_fabric (diff_cache_file,0 )))@@ -723,11 +733,6 @@ int main(int argc, char **argv)fprintf (stderr,"Failed to find port: %s\n" , guid_str); }else if (!all && dr_path) {ibnd_port_t *p =NULL ; -uint8_t ni[IB_SMP_DATA_SIZE ] = {0 }; - -if (!smp_query_via (ni, &port_id,IB_ATTR_NODE_INFO ,0 , - ibd_timeout, ibmad_port)) -return -1 ;mad_decode_field (ni,IB_NODE_PORT_GUID_F , &(guid)); p =ibnd_find_port_guid (fabric, guid);@@ -758,6 +763,5 @@ int main(int argc, char **argv) close_port:close_node_name_map (node_name_map); -mad_rpc_close_port (ibmad_port);exit (rc); }Signature · 1 line
1.7.8.2
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html