* [PATCH v2 2/4 infiniband-diags] ibqueryerrors: Close global file descriptor before running ibnd_discover_fabric
@ 2015-04-26 19:33 Hal Rosenstock
[not found] ` <553D3D9E.3020804-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
0 siblings, 1 reply; 3+ messages in thread
From: Hal Rosenstock @ 2015-04-26 19:33 UTC (permalink / raw)
To: Ira Weiny
Cc: Vladimir Koushnir,
linux-rdma (linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org)
From: Vladimir Koushnir <vladimirk-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Date: Sun, 26 Apr 2015 12:24:06 +0300
Global file descriptor for SMPs and GMPs should be closed before running
ibnd_discover_fabric() to avoid parallel usage of two SMP file descriptors
Signed-off-by: Vladimir Koushnir <vladimirk-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Signed-off-by: Hal Rosenstock <hal-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
---
Changes since v1:
Fixed direct route (-D) option
diff --git a/src/ibqueryerrors.c b/src/ibqueryerrors.c
index 06fcbac..80436d3 100644
--- a/src/ibqueryerrors.c
+++ b/src/ibqueryerrors.c
@@ -1000,18 +1002,20 @@ int main(int argc, char **argv)
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);
}
if (resolve_self(ibd_ca, ibd_ca_port, &self_portid, &port, &self_gid.raw) < 0) {
+ mad_rpc_close_port(ibmad_port);
IBEXIT("can't resolve self port %s", argv[0]);
goto close_port;
}
+ node_name_map = open_node_name_map(node_name_map_file);
+
/* limit the scan the fabric around the target */
if (dr_path) {
if ((resolved =
@@ -1030,10 +1034,13 @@ int main(int argc, char **argv)
lid2sl_table[portid.lid] = portid.sl;
}
+ mad_rpc_close_port(ibmad_port);
+
if (load_cache_file) {
if ((fabric = ibnd_load_fabric(load_cache_file, 0)) == NULL) {
fprintf(stderr, "loading cached fabric failed\n");
- exit(-1);
+ rc = -1;
+ goto close_port;
}
} else {
if (resolved >= 0) {
@@ -1057,6 +1064,21 @@ int main(int argc, char **argv)
set_thresholds(threshold_file);
+ /* reopen the global ibmad_port */
+ ibmad_port = mad_rpc_open_port(ibd_ca, ibd_ca_port,
+ mgmt_classes, 4);
+ if (!ibmad_port) {
+ ibnd_destroy_fabric(fabric);
+ close_node_name_map(node_name_map);
+ IBEXIT("Failed to reopen port: %s:%d\n",
+ ibd_ca, ibd_ca_port);
+ }
+
+ smp_mkey_set(ibmad_port, ibd_mkey);
+
+ if (ibd_timeout)
+ mad_rpc_set_timeout(ibmad_port, ibd_timeout);
+
if (port_guid_str) {
ibnd_port_t *port = ibnd_find_port_guid(fabric, port_guid);
if (port)
@@ -1067,12 +1089,12 @@ int main(int argc, char **argv)
} else if (dr_path) {
ibnd_port_t *port = ibnd_find_port_dr(fabric, dr_path);
uint8_t ni[IB_SMP_DATA_SIZE] = { 0 };
-
if (!smp_query_via(ni, &portid, IB_ATTR_NODE_INFO, 0,
- ibd_timeout, ibmad_port)) {
- rc = -1;
- goto destroy_fabric;
+ ibd_timeout, ibmad_port)) {
+ fprintf(stderr, "Failed to query local Node Info\n");
+ goto destroy_fabric;
}
+
mad_decode_field(ni, IB_NODE_PORT_GUID_F, &(port_guid));
port = ibnd_find_port_guid(fabric, port_guid);
@@ -1087,6 +1109,7 @@ int main(int argc, char **argv)
if(obtain_sl)
if(path_record_query(self_gid,0))
goto destroy_fabric;
+
ibnd_iter_nodes(fabric, print_node, NULL);
}
@@ -1095,10 +1118,10 @@ int main(int argc, char **argv)
rc = 1;
destroy_fabric:
+ mad_rpc_close_port(ibmad_port);
ibnd_destroy_fabric(fabric);
close_port:
- mad_rpc_close_port(ibmad_port);
close_node_name_map(node_name_map);
exit(rc);
}
--
1.7.8.2
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 3+ messages in thread[parent not found: <553D3D9E.3020804-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>]
* Re: [PATCH v2 2/4 infiniband-diags] ibqueryerrors: Close global file descriptor before running ibnd_discover_fabric [not found] ` <553D3D9E.3020804-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org> @ 2015-07-03 15:24 ` ira.weiny [not found] ` <20150703152421.GF15224-W4f6Xiosr+yv7QzWx2u06xL4W9x8LtSr@public.gmane.org> 0 siblings, 1 reply; 3+ messages in thread From: ira.weiny @ 2015-07-03 15:24 UTC (permalink / raw) To: Hal Rosenstock Cc: Vladimir Koushnir, linux-rdma (linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org) On Sun, Apr 26, 2015 at 03:33:50PM -0400, Hal Rosenstock wrote: > From: Vladimir Koushnir <vladimirk-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org> > Date: Sun, 26 Apr 2015 12:24:06 +0300 > > Global file descriptor for SMPs and GMPs should be closed before running > ibnd_discover_fabric() to avoid parallel usage of two SMP file descriptors > > Signed-off-by: Vladimir Koushnir <vladimirk-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org> > Signed-off-by: Hal Rosenstock <hal-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org> This patch made the goto labels misleading when reading the code. I changed the name of the goto labels. Please verify I did not break anything on your end. Applied with fix ups to the goto labels. Ira > --- > Changes since v1: > Fixed direct route (-D) option > > diff --git a/src/ibqueryerrors.c b/src/ibqueryerrors.c > index 06fcbac..80436d3 100644 > --- a/src/ibqueryerrors.c > +++ b/src/ibqueryerrors.c > @@ -1000,18 +1002,20 @@ int main(int argc, char **argv) > 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); > } > > if (resolve_self(ibd_ca, ibd_ca_port, &self_portid, &port, &self_gid.raw) < 0) { > + mad_rpc_close_port(ibmad_port); > IBEXIT("can't resolve self port %s", argv[0]); > goto close_port; > } > > + node_name_map = open_node_name_map(node_name_map_file); > + > /* limit the scan the fabric around the target */ > if (dr_path) { > if ((resolved = > @@ -1030,10 +1034,13 @@ int main(int argc, char **argv) > lid2sl_table[portid.lid] = portid.sl; > } > > + mad_rpc_close_port(ibmad_port); > + > if (load_cache_file) { > if ((fabric = ibnd_load_fabric(load_cache_file, 0)) == NULL) { > fprintf(stderr, "loading cached fabric failed\n"); > - exit(-1); > + rc = -1; > + goto close_port; > } > } else { > if (resolved >= 0) { > @@ -1057,6 +1064,21 @@ int main(int argc, char **argv) > > set_thresholds(threshold_file); > > + /* reopen the global ibmad_port */ > + ibmad_port = mad_rpc_open_port(ibd_ca, ibd_ca_port, > + mgmt_classes, 4); > + if (!ibmad_port) { > + ibnd_destroy_fabric(fabric); > + close_node_name_map(node_name_map); > + IBEXIT("Failed to reopen port: %s:%d\n", > + ibd_ca, ibd_ca_port); > + } > + > + smp_mkey_set(ibmad_port, ibd_mkey); > + > + if (ibd_timeout) > + mad_rpc_set_timeout(ibmad_port, ibd_timeout); > + > if (port_guid_str) { > ibnd_port_t *port = ibnd_find_port_guid(fabric, port_guid); > if (port) > @@ -1067,12 +1089,12 @@ int main(int argc, char **argv) > } else if (dr_path) { > ibnd_port_t *port = ibnd_find_port_dr(fabric, dr_path); > uint8_t ni[IB_SMP_DATA_SIZE] = { 0 }; > - > if (!smp_query_via(ni, &portid, IB_ATTR_NODE_INFO, 0, > - ibd_timeout, ibmad_port)) { > - rc = -1; > - goto destroy_fabric; > + ibd_timeout, ibmad_port)) { > + fprintf(stderr, "Failed to query local Node Info\n"); > + goto destroy_fabric; > } > + > mad_decode_field(ni, IB_NODE_PORT_GUID_F, &(port_guid)); > > port = ibnd_find_port_guid(fabric, port_guid); > @@ -1087,6 +1109,7 @@ int main(int argc, char **argv) > if(obtain_sl) > if(path_record_query(self_gid,0)) > goto destroy_fabric; > + > ibnd_iter_nodes(fabric, print_node, NULL); > } > > @@ -1095,10 +1118,10 @@ int main(int argc, char **argv) > rc = 1; > > destroy_fabric: > + mad_rpc_close_port(ibmad_port); > ibnd_destroy_fabric(fabric); > > close_port: > - mad_rpc_close_port(ibmad_port); > close_node_name_map(node_name_map); > exit(rc); > } > -- > 1.7.8.2 > -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 3+ messages in thread
[parent not found: <20150703152421.GF15224-W4f6Xiosr+yv7QzWx2u06xL4W9x8LtSr@public.gmane.org>]
* Re: [PATCH v2 2/4 infiniband-diags] ibqueryerrors: Close global file descriptor before running ibnd_discover_fabric [not found] ` <20150703152421.GF15224-W4f6Xiosr+yv7QzWx2u06xL4W9x8LtSr@public.gmane.org> @ 2015-07-15 16:00 ` Hal Rosenstock 0 siblings, 0 replies; 3+ messages in thread From: Hal Rosenstock @ 2015-07-15 16:00 UTC (permalink / raw) To: ira.weiny Cc: Vladimir Koushnir, linux-rdma (linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org) On 7/3/2015 11:24 AM, ira.weiny wrote: > On Sun, Apr 26, 2015 at 03:33:50PM -0400, Hal Rosenstock wrote: >> From: Vladimir Koushnir <vladimirk-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org> >> Date: Sun, 26 Apr 2015 12:24:06 +0300 >> >> Global file descriptor for SMPs and GMPs should be closed before running >> ibnd_discover_fabric() to avoid parallel usage of two SMP file descriptors >> >> Signed-off-by: Vladimir Koushnir <vladimirk-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org> >> Signed-off-by: Hal Rosenstock <hal-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org> > > This patch made the goto labels misleading when reading the code. I changed > the name of the goto labels. These label name changes look fine to me. Thanks. -- Hal > Please verify I did not break anything on your end. > > Applied with fix ups to the goto labels. > > Ira > >> --- >> Changes since v1: >> Fixed direct route (-D) option >> >> diff --git a/src/ibqueryerrors.c b/src/ibqueryerrors.c >> index 06fcbac..80436d3 100644 >> --- a/src/ibqueryerrors.c >> +++ b/src/ibqueryerrors.c >> @@ -1000,18 +1002,20 @@ int main(int argc, char **argv) >> 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); >> } >> >> if (resolve_self(ibd_ca, ibd_ca_port, &self_portid, &port, &self_gid.raw) < 0) { >> + mad_rpc_close_port(ibmad_port); >> IBEXIT("can't resolve self port %s", argv[0]); >> goto close_port; >> } >> >> + node_name_map = open_node_name_map(node_name_map_file); >> + >> /* limit the scan the fabric around the target */ >> if (dr_path) { >> if ((resolved = >> @@ -1030,10 +1034,13 @@ int main(int argc, char **argv) >> lid2sl_table[portid.lid] = portid.sl; >> } >> >> + mad_rpc_close_port(ibmad_port); >> + >> if (load_cache_file) { >> if ((fabric = ibnd_load_fabric(load_cache_file, 0)) == NULL) { >> fprintf(stderr, "loading cached fabric failed\n"); >> - exit(-1); >> + rc = -1; >> + goto close_port; >> } >> } else { >> if (resolved >= 0) { >> @@ -1057,6 +1064,21 @@ int main(int argc, char **argv) >> >> set_thresholds(threshold_file); >> >> + /* reopen the global ibmad_port */ >> + ibmad_port = mad_rpc_open_port(ibd_ca, ibd_ca_port, >> + mgmt_classes, 4); >> + if (!ibmad_port) { >> + ibnd_destroy_fabric(fabric); >> + close_node_name_map(node_name_map); >> + IBEXIT("Failed to reopen port: %s:%d\n", >> + ibd_ca, ibd_ca_port); >> + } >> + >> + smp_mkey_set(ibmad_port, ibd_mkey); >> + >> + if (ibd_timeout) >> + mad_rpc_set_timeout(ibmad_port, ibd_timeout); >> + >> if (port_guid_str) { >> ibnd_port_t *port = ibnd_find_port_guid(fabric, port_guid); >> if (port) >> @@ -1067,12 +1089,12 @@ int main(int argc, char **argv) >> } else if (dr_path) { >> ibnd_port_t *port = ibnd_find_port_dr(fabric, dr_path); >> uint8_t ni[IB_SMP_DATA_SIZE] = { 0 }; >> - >> if (!smp_query_via(ni, &portid, IB_ATTR_NODE_INFO, 0, >> - ibd_timeout, ibmad_port)) { >> - rc = -1; >> - goto destroy_fabric; >> + ibd_timeout, ibmad_port)) { >> + fprintf(stderr, "Failed to query local Node Info\n"); >> + goto destroy_fabric; >> } >> + >> mad_decode_field(ni, IB_NODE_PORT_GUID_F, &(port_guid)); >> >> port = ibnd_find_port_guid(fabric, port_guid); >> @@ -1087,6 +1109,7 @@ int main(int argc, char **argv) >> if(obtain_sl) >> if(path_record_query(self_gid,0)) >> goto destroy_fabric; >> + >> ibnd_iter_nodes(fabric, print_node, NULL); >> } >> >> @@ -1095,10 +1118,10 @@ int main(int argc, char **argv) >> rc = 1; >> >> destroy_fabric: >> + mad_rpc_close_port(ibmad_port); >> ibnd_destroy_fabric(fabric); >> >> close_port: >> - mad_rpc_close_port(ibmad_port); >> close_node_name_map(node_name_map); >> exit(rc); >> } >> -- >> 1.7.8.2 >> > -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-07-15 16:00 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-04-26 19:33 [PATCH v2 2/4 infiniband-diags] ibqueryerrors: Close global file descriptor before running ibnd_discover_fabric Hal Rosenstock
[not found] ` <553D3D9E.3020804-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-07-03 15:24 ` ira.weiny
[not found] ` <20150703152421.GF15224-W4f6Xiosr+yv7QzWx2u06xL4W9x8LtSr@public.gmane.org>
2015-07-15 16:00 ` Hal Rosenstock
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox