diff options
author | Soumya Koduri <skoduri@redhat.com> | 2015-01-27 16:53:35 +0530 |
---|---|---|
committer | Niels de Vos <ndevos@redhat.com> | 2015-02-23 04:51:43 -0800 |
commit | bf22868f82c89e0ee68d394a2257869a36662eaa (patch) | |
tree | 575569c8fa8f50660cb8a760bd5e5c2f528d08e1 /libglusterfs/src/syncop.c | |
parent | 30357bcfcd4a7c92e0e59ff58a26d48c8416c564 (diff) |
libglusterfs: Added support to set 'frame->root->lkowner'
This support can be used by the clients using SYNCOP framework,
to pass unique owners for various locks taken on a file, so that
the glusterfs-server can treat them as being locks from different owners.
Change-Id: Ie88014053af40fc7913ad6c1f7730d54cc44ddab
BUG: 1186713
Signed-off-by: Soumya Koduri <skoduri@redhat.com>
Reviewed-on: http://review.gluster.org/9482
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Shyamsundar Ranganathan <srangana@redhat.com>
Reviewed-by: Niels de Vos <ndevos@redhat.com>
Diffstat (limited to 'libglusterfs/src/syncop.c')
-rw-r--r-- | libglusterfs/src/syncop.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/libglusterfs/src/syncop.c b/libglusterfs/src/syncop.c index 56042d6897e..f571a2ae8bd 100644 --- a/libglusterfs/src/syncop.c +++ b/libglusterfs/src/syncop.c @@ -209,6 +209,46 @@ out: return ret; } +int +syncopctx_setfslkowner (gf_lkowner_t *lk_owner) +{ + struct syncopctx *opctx = NULL; + int ret = 0; + + /* In args check */ + if (!lk_owner) { + ret = -1; + errno = EINVAL; + goto out; + } + + opctx = syncopctx_getctx (); + + /* alloc for this thread the first time */ + if (!opctx) { + opctx = GF_CALLOC (1, sizeof (*opctx), gf_common_mt_syncopctx); + if (!opctx) { + ret = -1; + goto out; + } + + ret = syncopctx_setctx (opctx); + if (ret != 0) { + GF_FREE (opctx); + opctx = NULL; + goto out; + } + } + +out: + if (opctx && lk_owner) { + opctx->lk_owner = *lk_owner; + opctx->valid |= SYNCOPCTX_LKOWNER; + } + + return ret; +} + static void __run (struct synctask *task) { |