diff options
author | Pranith Kumar K <pkarampu@redhat.com> | 2018-07-03 20:38:23 +0530 |
---|---|---|
committer | Pranith Kumar Karampuri <pkarampu@redhat.com> | 2018-07-04 15:04:30 +0000 |
commit | 16e35706aafbcd710136a33a51881d7ffb2471ca (patch) | |
tree | 4830f8972d2231d86f0103169b64626ce64b8df5 /xlators/cluster | |
parent | 0bd0e7c2b4508cf0fff68bd14e3947287a17e875 (diff) |
cluster/afr: Make sure lk-owner is assigned at the time of lock
Problem:
In the new eager-lock implementation lk-owner is assigned after the
'local' is added to the eager-lock list, so there exists a possibility
of lock being sent even before lk-owner is assigned.
Fix:
Make sure to assign lk-owner before adding local to eager-lock list
fixes bz#1598193
Change-Id: I26d1b7bcf3e8b22531f1dc0b952cae2d92889ef2
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
(cherry picked from commit c6f93e422855f656d3a86461a8458f37ad0103eb)
Diffstat (limited to 'xlators/cluster')
-rw-r--r-- | xlators/cluster/afr/src/afr-transaction.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/xlators/cluster/afr/src/afr-transaction.c b/xlators/cluster/afr/src/afr-transaction.c index bfea096cf3b..61abf4aa090 100644 --- a/xlators/cluster/afr/src/afr-transaction.c +++ b/xlators/cluster/afr/src/afr-transaction.c @@ -2327,6 +2327,7 @@ __afr_eager_lock_handle (afr_local_t *local, gf_boolean_t *take_lock, if (local->fd && !afr_are_multiple_fds_opened (local, this)) { local->transaction.eager_lock_on = _gf_true; + afr_set_lk_owner (local->transaction.frame, this, local->inode); } lock = &local->inode_ctx->lock[local->transaction.type]; @@ -2430,8 +2431,6 @@ lock_phase: if (!local->transaction.eager_lock_on) { afr_set_lk_owner (local->transaction.frame, this, local->transaction.frame->root); - } else { - afr_set_lk_owner (local->transaction.frame, this, local->inode); } |