From b3e09b4f56a01c5ddc6e4c347990eeb41774433c Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Fri, 1 Apr 2011 16:42:52 -0700 Subject: [PATCH] refresh (create temporary patch) --- meta | 5 ++-- patches/refresh-temp | 71 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 patches/refresh-temp diff --git a/meta b/meta index 5ef7610..79602da 100644 --- a/meta +++ b/meta @@ -1,10 +1,11 @@ Version: 1 -Previous: 9d72115f8f4defddd6d76160662e22e99b029f69 -Head: 690668987a981187282450e2934090b6ccb15f1b +Previous: cc5db718b24d972bd207464a68a63195b2f68770 +Head: b5702af7c169e3fba0b4a1f3486a4b5767762573 Applied: opt_mc_av: 1c9cb4576f95c0d2cc7bf96d33cc6efe5f6c313d one_mc_join: ef3728004507256635ad95161cd92811661affbe dyn_ah: 690668987a981187282450e2934090b6ccb15f1b + refresh-temp: b5702af7c169e3fba0b4a1f3486a4b5767762573 Unapplied: addr_size: 8de02c47fbf595132105a7050ad6f755f49f9a7a Hidden: diff --git a/patches/refresh-temp b/patches/refresh-temp new file mode 100644 index 0000000..91421d2 --- /dev/null +++ b/patches/refresh-temp @@ -0,0 +1,71 @@ +Bottom: 0f7e548ae7fb3b8c706fb9b466adfb81accbd129 +Top: e8b5bb1cf92f403d8767fc1d61cb8c538da64fe3 +Author: Sean Hefty +Date: 2011-04-01 16:42:52 -0700 + +Refresh of dyn_ah + +--- + +diff --git a/src/acm.c b/src/acm.c +index 641fc2d..53a8e7b 100644 +--- a/src/acm.c ++++ b/src/acm.c +@@ -450,20 +450,30 @@ acm_alloc_send(struct acm_ep *ep, struct acm_dest *dest, size_t size) + msg->mr = ibv_reg_mr(ep->port->dev->pd, msg->data, size, 0); + if (!msg->mr) { + acm_log(0, "ERROR - failed to register send buffer\n"); +- goto err; ++ goto err1; ++ } ++ ++ if (!dest->ah) { ++ msg->ah = ibv_create_ah(ep->port->dev->pd, &dest->av); ++ if (!msg->ah) { ++ acm_log(0, "ERROR - unable to create ah\n"); ++ goto err2; ++ } ++ msg->wr.wr.ud.ah = msg->ah; ++ } else { ++ msg->wr.wr.ud.ah = dest->ah; + } + ++ acm_log(2, "get dest %s\n", dest->name); ++ (void) atomic_inc(&dest->refcnt); ++ msg->dest = dest; ++ + msg->wr.next = NULL; + msg->wr.sg_list = &msg->sge; + msg->wr.num_sge = 1; + msg->wr.opcode = IBV_WR_SEND; + msg->wr.send_flags = IBV_SEND_SIGNALED; + msg->wr.wr_id = (uintptr_t) msg; +- +- acm_log(2, "get dest %s\n", dest->name); +- (void) atomic_inc(&dest->refcnt); +- msg->dest = dest; +- msg->wr.wr.ud.ah = dest->ah; + msg->wr.wr.ud.remote_qpn = dest->remote_qpn; + msg->wr.wr.ud.remote_qkey = ACM_QKEY; + +@@ -472,7 +482,10 @@ acm_alloc_send(struct acm_ep *ep, struct acm_dest *dest, size_t size) + msg->sge.addr = (uintptr_t) msg->data; + acm_log(2, "%p\n", msg); + return msg; +-err: ++ ++err2: ++ ibv_dereg_mr(msg->mr); ++err1: + free(msg); + return NULL; + } +@@ -491,6 +504,8 @@ acm_init_send_req(struct acm_send_msg *msg, void *context, + static void acm_free_send(struct acm_send_msg *msg) + { + acm_log(2, "%p\n", msg); ++ if (msg->ah) ++ ibv_destroy_ah(msg->ah); + ibv_dereg_mr(msg->mr); + acm_put_dest(msg->dest); + free(msg); -- 2.41.0