From 07b09950374f4d5206d32b2d188d56e116ebe924 Mon Sep 17 00:00:00 2001 From: basebuilder_pel7ppc64bebuilder0 Date: Sat, 15 Dec 2018 17:49:10 +0100 Subject: [PATCH] libfabric package update Signed-off-by: basebuilder_pel7ppc64bebuilder0 --- ...m2-Avoid-long-delay-in-psm2_ep_close.patch | 195 ++++++++++++++++++ SPECS/libfabric.spec | 150 ++++++++++++++ 2 files changed, 345 insertions(+) create mode 100644 SOURCES/0001-Revert-prov-psm2-Avoid-long-delay-in-psm2_ep_close.patch create mode 100644 SPECS/libfabric.spec diff --git a/SOURCES/0001-Revert-prov-psm2-Avoid-long-delay-in-psm2_ep_close.patch b/SOURCES/0001-Revert-prov-psm2-Avoid-long-delay-in-psm2_ep_close.patch new file mode 100644 index 00000000..ba9867d4 --- /dev/null +++ b/SOURCES/0001-Revert-prov-psm2-Avoid-long-delay-in-psm2_ep_close.patch @@ -0,0 +1,195 @@ +From dafc07e38c7c2af1dec371276dec08da39e1636a Mon Sep 17 00:00:00 2001 +From: Jianxin Xiong +Date: Wed, 12 Sep 2018 08:53:32 -0700 +Subject: [PATCH] Revert "prov/psm2: Avoid long delay in psm2_ep_close" + +This reverts commit 7741df0db37085c1a49c05185c9b3f8170981661. + +Sporadic assertion failures have been observed inside psm2_ep_disconnect2(). +Disable the patch until the issue is fixed. + +Signed-off-by: Jianxin Xiong +--- + prov/psm2/src/psmx2_av.c | 79 ++++++++++++++++++------------------------ + prov/psm2/src/psmx2_trx_ctxt.c | 32 +++-------------- + 2 files changed, 39 insertions(+), 72 deletions(-) + +diff --git a/prov/psm2/src/psmx2_av.c b/prov/psm2/src/psmx2_av.c +index 815407405..63c6e5beb 100644 +--- a/prov/psm2/src/psmx2_av.c ++++ b/prov/psm2/src/psmx2_av.c +@@ -32,40 +32,6 @@ + + #include "psmx2.h" + +-static void psmx2_set_epaddr_context(struct psmx2_trx_ctxt *trx_ctxt, +- psm2_epid_t epid, psm2_epaddr_t epaddr) +-{ +- struct psmx2_epaddr_context *context; +- +- context = (void *)psm2_epaddr_getctxt(epaddr); +- if (context) { +- if (context->trx_ctxt != trx_ctxt || context->epid != epid) { +- FI_WARN(&psmx2_prov, FI_LOG_AV, +- "trx_ctxt or epid doesn't match\n"); +- context = NULL; +- } +- } +- +- if (context) +- return; +- +- context = malloc(sizeof *context); +- if (!context) { +- FI_WARN(&psmx2_prov, FI_LOG_AV, +- "cannot allocate context\n"); +- return; +- } +- +- context->trx_ctxt = trx_ctxt; +- context->epid = epid; +- context->epaddr = epaddr; +- psm2_epaddr_setctxt(epaddr, context); +- +- psmx2_lock(&trx_ctxt->peer_lock, 2); +- dlist_insert_before(&context->entry, &trx_ctxt->peer_list); +- psmx2_unlock(&trx_ctxt->peer_lock, 2); +-} +- + /* + * SEP address query protocol: + * +@@ -118,8 +84,6 @@ int psmx2_am_sep_handler(psm2_am_token_t token, psm2_amarg_t *args, + struct psmx2_fid_sep *sep; + struct psmx2_sep_query *req; + struct psmx2_fid_av *av; +- psm2_epaddr_t src_epaddr; +- psm2_epid_t src_epid; + psm2_epid_t *epids; + psm2_epid_t *buf = NULL; + int buflen; +@@ -129,15 +93,6 @@ int psmx2_am_sep_handler(psm2_am_token_t token, psm2_amarg_t *args, + cmd = PSMX2_AM_GET_OP(args[0].u32w0); + domain = trx_ctxt->domain; + +- /* +- * the implicit connection to the AM source needs also to be disconnected +- * to avoid long delay inside psm2_ep_close. make sure the source is added +- * to the peer list. +- */ +- psm2_am_get_source(token, &src_epaddr); +- psm2_epaddr_to_epid(src_epaddr, &src_epid); +- psmx2_set_epaddr_context(trx_ctxt, src_epid, src_epaddr); +- + switch (cmd) { + case PSMX2_AM_REQ_SEP_QUERY: + sep_id = args[0].u32w1; +@@ -226,6 +181,40 @@ static inline double psmx2_conn_timeout(int sec) + return sec * 1e9; + } + ++static void psmx2_set_epaddr_context(struct psmx2_trx_ctxt *trx_ctxt, ++ psm2_epid_t epid, psm2_epaddr_t epaddr) ++{ ++ struct psmx2_epaddr_context *context; ++ ++ context = (void *)psm2_epaddr_getctxt(epaddr); ++ if (context) { ++ if (context->trx_ctxt != trx_ctxt || context->epid != epid) { ++ FI_WARN(&psmx2_prov, FI_LOG_AV, ++ "trx_ctxt or epid doesn't match\n"); ++ context = NULL; ++ } ++ } ++ ++ if (context) ++ return; ++ ++ context = malloc(sizeof *context); ++ if (!context) { ++ FI_WARN(&psmx2_prov, FI_LOG_AV, ++ "cannot allocate context\n"); ++ return; ++ } ++ ++ context->trx_ctxt = trx_ctxt; ++ context->epid = epid; ++ context->epaddr = epaddr; ++ psm2_epaddr_setctxt(epaddr, context); ++ ++ psmx2_lock(&trx_ctxt->peer_lock, 2); ++ dlist_insert_before(&context->entry, &trx_ctxt->peer_list); ++ psmx2_unlock(&trx_ctxt->peer_lock, 2); ++} ++ + int psmx2_epid_to_epaddr(struct psmx2_trx_ctxt *trx_ctxt, + psm2_epid_t epid, psm2_epaddr_t *epaddr) + { +diff --git a/prov/psm2/src/psmx2_trx_ctxt.c b/prov/psm2/src/psmx2_trx_ctxt.c +index 6dd3196e5..709ced94f 100644 +--- a/prov/psm2/src/psmx2_trx_ctxt.c ++++ b/prov/psm2/src/psmx2_trx_ctxt.c +@@ -124,10 +124,6 @@ void psmx2_trx_ctxt_disconnect_peers(struct psmx2_trx_ctxt *trx_ctxt) + struct psmx2_epaddr_context *peer; + struct dlist_entry peer_list; + psm2_amarg_t arg; +- psm2_epaddr_t *epaddrs; +- psm2_error_t *errors; +- int peer_count = 0; +- int i = 0; + + arg.u32w0 = PSMX2_AM_REQ_TRX_CTXT_DISCONNECT; + +@@ -137,36 +133,17 @@ void psmx2_trx_ctxt_disconnect_peers(struct psmx2_trx_ctxt *trx_ctxt) + dlist_foreach_safe(&trx_ctxt->peer_list, item, tmp) { + dlist_remove(item); + dlist_insert_before(item, &peer_list); +- peer_count++; + } + psmx2_unlock(&trx_ctxt->peer_lock, 2); + +- if (!peer_count) +- return; +- +- epaddrs = malloc(peer_count * sizeof(*epaddrs)); +- errors = malloc(peer_count * sizeof(*errors)); +- + dlist_foreach_safe(&peer_list, item, tmp) { + peer = container_of(item, struct psmx2_epaddr_context, entry); +- if (epaddrs) +- epaddrs[i++] = peer->epaddr; +- if (psmx2_env.disconnect) { +- FI_INFO(&psmx2_prov, FI_LOG_CORE, "epaddr: %p\n", peer->epaddr); +- psm2_am_request_short(peer->epaddr, PSMX2_AM_TRX_CTXT_HANDLER, +- &arg, 1, NULL, 0, 0, NULL, NULL); +- } ++ FI_INFO(&psmx2_prov, FI_LOG_CORE, "epaddr: %p\n", peer->epaddr); ++ psm2_am_request_short(peer->epaddr, PSMX2_AM_TRX_CTXT_HANDLER, ++ &arg, 1, NULL, 0, 0, NULL, NULL); + psm2_epaddr_setctxt(peer->epaddr, NULL); + free(peer); + } +- +- /* disconnect locally to avoid long delay inside psm2_ep_close() */ +- if (epaddrs && errors) +- psm2_ep_disconnect2(trx_ctxt->psm2_ep, peer_count, epaddrs, NULL, +- errors, PSM2_EP_DISCONNECT_FORCE, 0); +- +- free(errors); +- free(epaddrs); + } + + static const char *psmx2_usage_flags_to_string(int usage_flags) +@@ -203,7 +180,8 @@ void psmx2_trx_ctxt_free(struct psmx2_trx_ctxt *trx_ctxt, int usage_flags) + dlist_remove(&trx_ctxt->entry); + psmx2_unlock(&trx_ctxt->domain->trx_ctxt_lock, 1); + +- psmx2_trx_ctxt_disconnect_peers(trx_ctxt); ++ if (psmx2_env.disconnect) ++ psmx2_trx_ctxt_disconnect_peers(trx_ctxt); + + if (trx_ctxt->am_initialized) + psmx2_am_fini(trx_ctxt); +-- +2.14.4 + diff --git a/SPECS/libfabric.spec b/SPECS/libfabric.spec new file mode 100644 index 00000000..e5ff7318 --- /dev/null +++ b/SPECS/libfabric.spec @@ -0,0 +1,150 @@ +Name: libfabric +Version: 1.6.1 +Release: 2%{?dist} +Summary: User-space RDMA Fabric Interfaces +Group: System Environment/Libraries +License: GPLv2 or BSD +Url: http://www.github.com/ofiwg/libfabric +Source: %{name}-%{version}.tar.gz +Patch1: 0001-Revert-prov-psm2-Avoid-long-delay-in-psm2_ep_close.patch + +BuildRequires: librdmacm-devel +BuildRequires: libibverbs-devel >= 1.2.0 +BuildRequires: libnl3-devel + +# infinipath-psm-devel only available for x86_64 +%ifarch x86_64 +BuildRequires: infinipath-psm-devel +BuildRequires: libpsm2-devel +%endif +# valgrind is unavailable for s390 +%ifnarch s390 +BuildRequires: valgrind-devel +%endif + +%ifarch x86_64 +%global configopts --enable-sockets --enable-verbs --enable-usnic --disable-static --enable-psm --enable-psm2 +%else +%global configopts --enable-sockets --enable-verbs --enable-usnic --disable-static +%endif + +%description +libfabric provides a user-space API to access high-performance fabric +services, such as RDMA. + +%package devel +Summary: Development files for the libfabric library +Group: System Environment/Libraries +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description devel +Development files for the libfabric library. + +%prep +%setup -q +%patch1 -p1 + +%build + +# defaults: with-dlopen can be over-rode: +%configure %{?_without_dlopen} %{configopts} \ +%ifnarch s390 + --with-valgrind +%endif + +make %{?_smp_mflags} V=1 + +%install +%make_install +# remove unpackaged files from the buildroot +rm -f %{buildroot}%{_libdir}/*.la + +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig + +%files +%{_libdir}/libfabric.so.* +%{_bindir}/fi_info +%{_bindir}/fi_pingpong +%{_bindir}/fi_strerror +%{_libdir}/pkgconfig/%{name}.pc +%{_mandir}/man1/* +%license COPYING +%doc AUTHORS README + +%files devel +%{_libdir}/libfabric.so +%{_includedir}/* +%{_mandir}/man3/* +%{_mandir}/man7/* + +%changelog +* Sat Sep 22 2018 Honggang Li - 1.6.1-2 +- Revert a psm2 commit to avoid sporadic assertion failures +- Resolves: bz1631874 + +* Tue Jun 5 2018 Honggang Li - 1.6.1-1 +- Rebase to latest release 1.6.1 +- Resolves: bz1483568 + +* Wed Jan 10 2018 Honggang Li - 1.5.3-1 +- Rebase to latest release 1.5.3 +- Resolves: bz1533293 + +* Thu Jan 4 2018 Honggang Li - 1.5.1-3 +- Add support of different CQ formats for the verbs/RDM +- Resolves: bz1530715 + +* Fri Oct 20 2017 Honggang Li - 1.5.1-2 +- Fix PPC32 compiling issue +- Resolves: bz1504395 + +* Tue Oct 17 2017 Honggang Li - 1.5.1-1 +- Rebase to v1.5.1 +- Resolves: bz1452791 + +* Tue May 16 2017 Honggang Li - 1.4.2-1 +- Update to upstream v1.4.2 release +- Related: bz1451100 + +* Wed Mar 01 2017 Jarod Wilson - 1.4.1-1 +- Update to upstream v1.4.1 release +- Related: bz1382827 + +* Mon May 30 2016 Honggang Li - 1.3.0-3 +- Rebuild against latest infinipath-psm. +- Related: bz1280143 + +* Mon May 30 2016 Honggang Li - 1.3.0-2 +- Rebuild libfabric to support Intel OPA PSM2. +- Related: bz1280143 + +* Wed May 4 2016 Honggang Li - 1.3.0-1 +- Update to latest upstream release +- Related: bz1280143 + +* Wed Sep 30 2015 Doug Ledford - 1.1.0-2 +- Rebuild against libnl3 now that the UD RoCE bug is fixed +- Related: bz1261028 + +* Fri Aug 14 2015 Honggang Li - 1.1.0-1 +- Rebase to upstream 1.1.0 +- Resolves: bz1253381 + +* Fri Aug 07 2015 Michal Schmidt - 1.1.0-0.2.rc4 +- Packaging Guidelines conformance fixes and spec file cleanups +- Related: bz1235266 + +* Thu Aug 6 2015 Honggang Li - 1.1.0-0.1.rc4 +- fix N-V-R issue and disable static library +- Related: bz1235266 + +* Tue Aug 4 2015 Honggang Li - 1.1.0rc4 +- Initial build for RHEL-7.2 +- Related: bz1235266 + +* Fri Jun 26 2015 Open Fabrics Interfaces Working Group 1.1.0rc1 +- Release 1.1.0rc1 + +* Sun May 3 2015 Open Fabrics Interfaces Working Group 1.0.0 +- Release 1.0.0