539d9ea952
Resolves: bz1749608 Signed-off-by: Honggang Li <honli@redhat.com>
113 lines
2.8 KiB
Diff
113 lines
2.8 KiB
Diff
From 8bafb0be08d93743db66398471723fe49983df1b Mon Sep 17 00:00:00 2001
|
|
From: Honggang Li <honli@redhat.com>
|
|
Date: Thu, 4 Jul 2019 03:48:39 -0400
|
|
Subject: [PATCH 2/2] Revert "prov/psm2: Clean up connection state in
|
|
fi_av_remove"
|
|
|
|
This reverts commit 5b892bd43c5a824d1e5709c3c1f686e48ee4e373.
|
|
|
|
Conflicts:
|
|
prov/psm2/src/psmx2_av.c
|
|
|
|
Simple context conflict.
|
|
---
|
|
prov/psm2/src/psmx2_av.c | 78 ----------------------------------------
|
|
1 file changed, 78 deletions(-)
|
|
|
|
diff --git a/prov/psm2/src/psmx2_av.c b/prov/psm2/src/psmx2_av.c
|
|
index 2dabf93bb..aaa4624e4 100644
|
|
--- a/prov/psm2/src/psmx2_av.c
|
|
+++ b/prov/psm2/src/psmx2_av.c
|
|
@@ -616,88 +616,10 @@ out:
|
|
return ret;
|
|
}
|
|
|
|
-static int psmx2_av_disconnect_addr(int trx_ctxt_id, psm2_epid_t epid,
|
|
- psm2_epaddr_t epaddr)
|
|
-{
|
|
- struct psmx2_epaddr_context *epaddr_context;
|
|
- psm2_error_t errors;
|
|
- int err;
|
|
-
|
|
- if (!epaddr)
|
|
- return 0;
|
|
-
|
|
- FI_INFO(&psmx2_prov, FI_LOG_AV,
|
|
- "trx_ctxt_id %d epid %lx epaddr %p\n", trx_ctxt_id, epid, epaddr);
|
|
-
|
|
- epaddr_context = psm2_epaddr_getctxt(epaddr);
|
|
- if (!epaddr_context)
|
|
- return -FI_EINVAL;
|
|
-
|
|
- if (trx_ctxt_id != epaddr_context->trx_ctxt->id)
|
|
- return -FI_EINVAL;
|
|
-
|
|
- if (epid != epaddr_context->epid)
|
|
- return -FI_EINVAL;
|
|
-
|
|
- err = psm2_ep_disconnect2(epaddr_context->trx_ctxt->psm2_ep, 1, &epaddr,
|
|
- NULL, &errors, PSM2_EP_DISCONNECT_FORCE, 0);
|
|
-
|
|
- return psmx2_errno(err);
|
|
-}
|
|
-
|
|
DIRECT_FN
|
|
STATIC int psmx2_av_remove(struct fid_av *av, fi_addr_t *fi_addr, size_t count,
|
|
uint64_t flags)
|
|
{
|
|
- struct psmx2_fid_av *av_priv;
|
|
- int idx, i, j, k;
|
|
- int err;
|
|
-
|
|
- av_priv = container_of(av, struct psmx2_fid_av, av);
|
|
-
|
|
- av_priv->domain->av_lock_fn(&av_priv->lock, 1);
|
|
-
|
|
- for (i = 0; i < count; i++) {
|
|
- idx = PSMX2_ADDR_IDX(fi_addr[i]);
|
|
- if (idx >= av_priv->hdr->last) {
|
|
- FI_WARN(&psmx2_prov, FI_LOG_AV,
|
|
- "AV index out of range: fi_addr %lx idx %d last %ld\n",
|
|
- fi_addr[i], idx, av_priv->hdr->last);
|
|
- continue;
|
|
- }
|
|
-
|
|
- if (av_priv->table[idx].type == PSMX2_EP_REGULAR) {
|
|
- for (j = 0; j < av_priv->max_trx_ctxt; j++) {
|
|
- if (!av_priv->conn_info[j].trx_ctxt)
|
|
- continue;
|
|
-
|
|
- err = psmx2_av_disconnect_addr(
|
|
- j, av_priv->table[idx].epid,
|
|
- av_priv->conn_info[j].epaddrs[idx]);
|
|
- if (!err)
|
|
- av_priv->conn_info[j].epaddrs[idx] = NULL;
|
|
- }
|
|
- } else {
|
|
- for (j = 0; j < av_priv->max_trx_ctxt; j++) {
|
|
- if (!av_priv->conn_info[j].trx_ctxt)
|
|
- continue;
|
|
-
|
|
- if (!av_priv->conn_info[j].sepaddrs)
|
|
- continue;
|
|
-
|
|
- for (k = 0; k < av_priv->sep_info[idx].ctxt_cnt; k++) {
|
|
- err = psmx2_av_disconnect_addr(
|
|
- j, av_priv->table[idx].epid,
|
|
- av_priv->conn_info[j].sepaddrs[idx][k]);
|
|
- if (!err)
|
|
- av_priv->conn_info[j].sepaddrs[idx][k] = NULL;
|
|
- }
|
|
- }
|
|
- }
|
|
- }
|
|
-
|
|
- av_priv->domain->av_unlock_fn(&av_priv->lock, 1);
|
|
-
|
|
return 0;
|
|
}
|
|
|
|
--
|
|
2.20.1
|
|
|