summaryrefslogtreecommitdiffstats
path: root/xlators/cluster/dht/src/dht-helper.c
diff options
context:
space:
mode:
authorSakshi <sabansal@redhat.com>2015-08-31 16:06:35 +0530
committerRaghavendra G <rgowdapp@redhat.com>2015-09-14 23:05:56 -0700
commit7b9135045685125d7c94d75f06d762fa1c5ba4b9 (patch)
treeecab45ce0071b1900386ac3d7e8aacfd81318c6c /xlators/cluster/dht/src/dht-helper.c
parentfa08597a004b591afbeb478d0a736ec09066f648 (diff)
dht: reverting changes that takes lock on all subvols to prevent rmdir vs lookup selfheal race
Locking on all subvols before an rmdir is unable to remove all directory entries. Hence reverting the patch for now. Change-Id: I31baf2b2fa2f62c57429cd44f3f229c35eff1939 BUG: 1245065 Signed-off-by: Sakshi <sabansal@redhat.com> Reviewed-on: http://review.gluster.org/12125 Tested-by: Gluster Build System <jenkins@build.gluster.com> Tested-by: NetBSD Build System <jenkins@build.gluster.org> Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
Diffstat (limited to 'xlators/cluster/dht/src/dht-helper.c')
-rw-r--r--xlators/cluster/dht/src/dht-helper.c38
1 files changed, 6 insertions, 32 deletions
diff --git a/xlators/cluster/dht/src/dht-helper.c b/xlators/cluster/dht/src/dht-helper.c
index 7a18559ff11..88bf7a605da 100644
--- a/xlators/cluster/dht/src/dht-helper.c
+++ b/xlators/cluster/dht/src/dht-helper.c
@@ -342,7 +342,6 @@ dht_lock_new (xlator_t *this, xlator_t *xl, loc_t *loc, short type,
lock->xl = xl;
lock->type = type;
-
lock->domain = gf_strdup (domain);
if (lock->domain == NULL) {
dht_lock_free (lock);
@@ -1680,8 +1679,7 @@ out:
int
dht_nonblocking_inodelk (call_frame_t *frame, dht_lock_t **lk_array,
- int lk_count, dht_reaction_type_t reaction,
- fop_inodelk_cbk_t inodelk_cbk)
+ int lk_count, fop_inodelk_cbk_t inodelk_cbk)
{
struct gf_flock flock = {0,};
int i = 0, ret = 0;
@@ -1704,7 +1702,6 @@ dht_nonblocking_inodelk (call_frame_t *frame, dht_lock_t **lk_array,
dht_set_lkowner (lk_array, lk_count, &lock_frame->root->lk_owner);
local = lock_frame->local;
- local->lock.reaction = reaction;
local->main_frame = frame;
local->call_cnt = lk_count;
@@ -1735,42 +1732,21 @@ dht_blocking_inodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
int32_t op_ret, int32_t op_errno, dict_t *xdata)
{
int lk_index = 0;
- int i = 0;
dht_local_t *local = NULL;
lk_index = (long) cookie;
local = frame->local;
+
if (op_ret == 0) {
local->lock.locks[lk_index]->locked = _gf_true;
} else {
- switch (op_errno) {
- case ESTALE:
- case ENOENT:
- if (local->lock.reaction != IGNORE_ENOENT_ESTALE) {
- local->lock.op_ret = -1;
- local->lock.op_errno = op_errno;
- goto cleanup;
- }
- break;
- default:
- local->lock.op_ret = -1;
- local->lock.op_errno = op_errno;
- goto cleanup;
- }
+ local->lock.op_ret = -1;
+ local->lock.op_errno = op_errno;
+ goto cleanup;
}
if (lk_index == (local->lock.lk_count - 1)) {
- for (i = 0; (i < local->lock.lk_count) &&
- (!local->lock.locks[i]->locked); i++) {
- ;
- }
-
- if (i == local->lock.lk_count) {
- local->lock.op_ret = -1;
- local->lock.op_errno = op_errno;
- }
-
dht_inodelk_done (frame);
} else {
dht_blocking_inodelk_rec (frame, ++lk_index);
@@ -1844,8 +1820,7 @@ out:
int
dht_blocking_inodelk (call_frame_t *frame, dht_lock_t **lk_array,
- int lk_count, dht_reaction_type_t reaction,
- fop_inodelk_cbk_t inodelk_cbk)
+ int lk_count, fop_inodelk_cbk_t inodelk_cbk)
{
int ret = -1;
call_frame_t *lock_frame = NULL;
@@ -1867,7 +1842,6 @@ dht_blocking_inodelk (call_frame_t *frame, dht_lock_t **lk_array,
dht_set_lkowner (lk_array, lk_count, &lock_frame->root->lk_owner);
local = lock_frame->local;
- local->lock.reaction = reaction;
local->main_frame = frame;
dht_blocking_inodelk_rec (lock_frame, 0);