diff options
author | Ravishankar N <ravishankar@redhat.com> | 2016-05-18 14:37:46 +0530 |
---|---|---|
committer | Pranith Kumar Karampuri <pkarampu@redhat.com> | 2016-05-25 03:37:08 -0700 |
commit | 8da90277f5f80ffffaa3e9f9ccee6f90c293cc03 (patch) | |
tree | 1aabeebcd797958b45c17eed4990d4491d73dd1d /xlators/meta | |
parent | 15c62e283dab7a1e84b875c9506613b716d05d51 (diff) |
cluster/afr: Check for required number of entrylks
Backport of: http://review.gluster.org/14358
Problem:
Parallel rmdir operations on the same directory results in ENOTCONN messages
eventhough there was no network disconnect.
In blocking entry lock during rmdir, AFR takes 2 set of locks on all its
children-One (parentdir,name of dir to be deleted), the other (full lock
on the dir being deleted). We proceed to pre-op stage even if only a single
lock (but not all the needed locks) was obtained, only to fail it with ENOTCONN
because afr_locked_nodes_get() returns zero nodes in afr_changelog_pre_op().
Fix:
After we get replies for all blocking lock requests, if we don't have
the minimum number of locks to carry out the FOP, unlock and fail the
FOP. The op_errno will be that of the last failed reply we got, i.e.
whatever is set in afr_lock_cbk().
Change-Id: I9fcb6bec0335dd9cdd851a92cb08605b4a959e64
BUG: 1339446
Signed-off-by: Ravishankar N <ravishankar@redhat.com>
Reviewed-on: http://review.gluster.org/14528
Smoke: Gluster Build System <jenkins@build.gluster.com>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Diffstat (limited to 'xlators/meta')
0 files changed, 0 insertions, 0 deletions