diff options
author | Pranith Kumar K <pkarampu@redhat.com> | 2015-06-04 09:52:51 +0530 |
---|---|---|
committer | Vijay Bellur <vbellur@redhat.com> | 2015-06-06 22:36:07 -0700 |
commit | 6fce83e55c2a4b96de8c9b1ce5b1bc8a60eaacc3 (patch) | |
tree | ae8f91b90384a12ac83aa0ab0d1673aa8af4da79 /xlators/features | |
parent | d38939e388c819f6c2ba6a6891edc27b6ecf3731 (diff) |
cluster/ec: EC_XATTR_DIRTY doesn't come in response
Backport of http://review.gluster.com/11078
Problem:
ec_update_size_version expects all the keys it did xattrop with to come in
response so that it can set the values again in ec_update_size_version_done.
But EC_XATTR_DIRTY is not combined so the value won't be present in the
response. So ctx->post/pre_dirty are not updated in
ec_update_size_version_done. So these values are still non-zero. When
ec_unlock_now is called as part of flush's unlock phase it again tries to
perform same xattrop for EC_XATTR_DIRTY. But ec_update_size_version is not
expected to be called in unlock phase of flush because ec_flush_size_version
should have reset everything to zero and unlock is never invoked from
ec_update_size_version_done for flush/fsync/fsyncdir. This leads to stale lock
which leads to hang.
Fix:
EC_XATTR_DIRTY is removed in ex_xattrop_cbk and is never combined with other
answers. So remove handling of this in the response.
BUG: 1228160
Change-Id: I657efca6e706e7acb541f98f526943f67562da9f
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
Reviewed-on: http://review.gluster.org/11084
Reviewed-by: Xavier Hernandez <xhernandez@datalab.es>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Tested-by: NetBSD Build System <jenkins@build.gluster.org>
Diffstat (limited to 'xlators/features')
0 files changed, 0 insertions, 0 deletions