diff options
author | Atin Mukherjee <amukherj@redhat.com> | 2015-05-20 14:33:41 +0530 |
---|---|---|
committer | Kaushal M <kaushal@redhat.com> | 2015-05-28 00:09:43 -0700 |
commit | 37f365843bed87728048da1f56de22290f5cb70f (patch) | |
tree | 1c5b8a23c016b0ac2f348faf6f856b1f5ea8565b /xlators/mgmt/glusterd/src/glusterd-syncop.h | |
parent | 58a687a8e0967393428bc5f93f0d32bbc3792f88 (diff) |
glusterd : allocate peerid to store in frame->cookie
commit a1de3b05 was using peerid from the stack and storing it in the
frame->cookie and in the subsequent callback it was referred. The existance of
this variable is not guranteed in the cbk since its not dynamically allocated.
Fix is to dynmacially manage peerid in the frame cookie.
This patch also fixes one problem in gd_sync_task_begin () where unlock is not
triggered if the cluster is running with lesser than 3.6 op-version resulting into
commands failing with another transaction is in progress.
Change-Id: I0d22cf663df53ef3769585703944577461061312
BUG: 1223213
Signed-off-by: Atin Mukherjee <amukherj@redhat.com>
Reviewed-on: http://review.gluster.org/10842
Tested-by: NetBSD Build System
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Kaushal M <kaushal@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-syncop.h')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-syncop.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-syncop.h b/xlators/mgmt/glusterd/src/glusterd-syncop.h index 1163677d626..f3425c2f538 100644 --- a/xlators/mgmt/glusterd/src/glusterd-syncop.h +++ b/xlators/mgmt/glusterd/src/glusterd-syncop.h @@ -39,6 +39,16 @@ synclock_lock (&conf->big_lock); \ } while (0) +#define GD_ALLOC_COPY_UUID(dst_ptr, uuid, ret) do { \ + dst_ptr = GF_CALLOC (1, sizeof (*dst_ptr), gf_common_mt_uuid_t); \ + if (dst_ptr) { \ + gf_uuid_copy (*dst_ptr, uuid); \ + ret = 0; \ + } else { \ + ret = -1; \ + } \ +} while (0) + int gd_syncop_submit_request (struct rpc_clnt *rpc, void *req, void *local, void *cookie, rpc_clnt_prog_t *prog, int procnum, fop_cbk_fn_t cbkfn, xdrproc_t xdrproc); |