diff options
author | Amar Tumballi <amar@gluster.com> | 2009-07-14 17:38:42 +0000 |
---|---|---|
committer | Anand V. Avati <avati@dev.gluster.com> | 2009-07-16 00:37:52 -0700 |
commit | 2a385c2984a8dd670c4b77361d8a24c3567138f5 (patch) | |
tree | 7913a7254905f7cad78c5673e0314db4b1fdc5ce | |
parent | bdcdc8dd18dda19af698f147e3f32ed7f9e5efd5 (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.c | 6 |
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); |