summaryrefslogtreecommitdiffstats
path: root/xlators/cluster
diff options
context:
space:
mode:
authorRavishankar N <ravishankar@redhat.com>2015-11-18 08:30:48 +0530
committerVijay Bellur <vbellur@redhat.com>2015-11-23 10:59:36 -0800
commitf46a54326871bed28c64cd5312b250c7c8207e4f (patch)
tree85adda5bc0ef1a2209718cc26beb345b176aefde /xlators/cluster
parent164a8dda2cbf10862483e0333ebf7e727fc87f07 (diff)
afr: Drop compatibility lock for data self-heal
Backport of http://review.gluster.org/#/c/12602/ In glusterfs 3.4 and older, AFR did not take locks in self-heal domain during data self-heal. So this compat lock in data domain was added to prevent older clients from trying to heal a file while an existing self-heal was going on by a newer client. But the side effect was that all appending writes (which take full locks in data domain) from mounts would be stalled until self-heal was complete. Since glusterfs 3.4 is not supported anymore, remove the compat lock. Change-Id: I20bb2edf7527ce5d8291d13eb8b9149e66e9bcac BUG: 1283478 Signed-off-by: Ravishankar N <ravishankar@redhat.com> Reviewed-on: http://review.gluster.org/12653 Tested-by: Gluster Build System <jenkins@build.gluster.com> Tested-by: NetBSD Build System <jenkins@build.gluster.org> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'xlators/cluster')
-rw-r--r--xlators/cluster/afr/src/afr-self-heal-data.c18
1 files changed, 0 insertions, 18 deletions
diff --git a/xlators/cluster/afr/src/afr-self-heal-data.c b/xlators/cluster/afr/src/afr-self-heal-data.c
index 1a97778944c..9a92ce35cdb 100644
--- a/xlators/cluster/afr/src/afr-self-heal-data.c
+++ b/xlators/cluster/afr/src/afr-self-heal-data.c
@@ -672,9 +672,7 @@ __afr_selfheal_data (call_frame_t *frame, xlator_t *this, fd_t *fd,
unsigned char *healed_sinks = NULL;
struct afr_reply *locked_replies = NULL;
int source = -1;
- gf_boolean_t compat = _gf_false;
gf_boolean_t did_sh = _gf_true;
- unsigned char *compat_lock = NULL;
priv = this->private;
@@ -682,7 +680,6 @@ __afr_selfheal_data (call_frame_t *frame, xlator_t *this, fd_t *fd,
sinks = alloca0 (priv->child_count);
healed_sinks = alloca0 (priv->child_count);
data_lock = alloca0 (priv->child_count);
- compat_lock = alloca0 (priv->child_count);
locked_replies = alloca0 (sizeof (*locked_replies) * priv->child_count);
@@ -727,18 +724,6 @@ __afr_selfheal_data (call_frame_t *frame, xlator_t *this, fd_t *fd,
ret = 0;
- if (priv->arbiter_count == 0) {/*TODO: delete this code after
- 3.5.x goes out of support*/
- /* Locking from (LLONG_MAX - 2) to (LLONG_MAX - 1) is
- for compatibility with older self-heal clients which
- do not hold a lock in the @priv->sh_domain domain to
- guard against concurrent ongoing self-heals
- */
- afr_selfheal_inodelk (frame, this, fd->inode,
- this->name, LLONG_MAX - 2, 1,
- compat_lock);
- compat = _gf_true;
- }
}
unlock:
afr_selfheal_uninodelk (frame, this, fd->inode, this->name, 0, 0,
@@ -758,9 +743,6 @@ unlock:
healed_sinks, AFR_DATA_TRANSACTION,
locked_replies, data_lock);
out:
- if (compat)
- afr_selfheal_uninodelk (frame, this, fd->inode, this->name,
- LLONG_MAX - 2, 1, compat_lock);
if (did_sh)
afr_log_selfheal (fd->inode->gfid, this, ret, "data", source,