summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmar Tumballi <amar@gluster.com>2009-07-14 17:38:42 +0000
committerAnand V. Avati <avati@dev.gluster.com>2009-07-16 00:37:52 -0700
commit2a385c2984a8dd670c4b77361d8a24c3567138f5 (patch)
tree7913a7254905f7cad78c5673e0314db4b1fdc5ce
parentbdcdc8dd18dda19af698f147e3f32ed7f9e5efd5 (diff)
server: don't check for 'loc->parent' in entrylk and inodelk calls
the lock operation on entry or inode is going to happen on only one inode, and it doesn't need dentry (with info on parent) for the lock operation to complete. Hence, in server_{inode,entry}lk() calls after server_loc_fill, we -should not- be checking for parent inode. Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 112 (parallel deletion of files mounted by different clients on the same back-end hangs and/or does not completely delete) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=112
-rw-r--r--xlators/protocol/server/src/server-protocol.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/xlators/protocol/server/src/server-protocol.c b/xlators/protocol/server/src/server-protocol.c
index f0dd2e88eab..7862ea47be7 100644
--- a/xlators/protocol/server/src/server-protocol.c
+++ b/xlators/protocol/server/src/server-protocol.c
@@ -5627,8 +5627,7 @@ server_inodelk (call_frame_t *frame, xlator_t *bound_xl,
state->volume, &state->loc,
state->cmd, &state->flock);
- if ((state->loc.parent == NULL) ||
- (state->loc.inode == NULL)) {
+ if (state->loc.inode == NULL) {
do_path_lookup (inodelk_stub, &(state->loc));
} else {
call_resume (inodelk_stub);
@@ -5786,8 +5785,7 @@ server_entrylk (call_frame_t *frame, xlator_t *bound_xl,
state->volume, &state->loc,
state->name, state->cmd, state->type);
- if (((state->loc.parent == NULL) && IS_NOT_ROOT(pathlen)) ||
- (state->loc.inode == NULL)) {
+ if (state->loc.inode == NULL) {
do_path_lookup (entrylk_stub, &(state->loc));
} else {
call_resume (entrylk_stub);