diff options
author | Mohit Agrawal <moagrawa@redhat.com> | 2018-05-30 15:09:29 +0530 |
---|---|---|
committer | Raghavendra G <rgowdapp@redhat.com> | 2018-06-03 03:22:07 +0000 |
commit | 2c1131e5868e46cfc806fb3a1cb63a5e554b4d6c (patch) | |
tree | 9ae1dc2679a14fb38901262718ae70181f95f30c /xlators | |
parent | e3563f6dfda6c3f44ecff52ac22738ff74413ae1 (diff) |
dht: Delete MDS internal xattr from dict in dht_getxattr_cbk
Problem: At the time of fetching xattr to heal xattr by afr
it is not able to fetch xattr because posix_getxattr
has a check to ignore if xattr name is MDS
Solution: To ignore same xattr update a check in dht_getxattr_cbk
instead of having a check in posix_getxattr
BUG: 1584098
Change-Id: I86cd2b2ee08488cb6c12f407694219d57c5361dc
fixes: bz#1584098
Signed-off-by: Mohit Agrawal <moagrawa@redhat.com>
Diffstat (limited to 'xlators')
-rw-r--r-- | xlators/cluster/dht/src/dht-common.c | 4 | ||||
-rw-r--r-- | xlators/storage/posix/src/posix-inode-fd-ops.c | 31 |
2 files changed, 4 insertions, 31 deletions
diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c index fdf10d5cfed..9165164578f 100644 --- a/xlators/cluster/dht/src/dht-common.c +++ b/xlators/cluster/dht/src/dht-common.c @@ -4544,6 +4544,10 @@ dht_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, dict_del (xattr, conf->xattr_name); } + if (dict_get (xattr, conf->mds_xattr_key)) { + dict_del (xattr, conf->mds_xattr_key); + } + if (frame->root->pid >= 0) { GF_REMOVE_INTERNAL_XATTR ("trusted.glusterfs.quota*", xattr); diff --git a/xlators/storage/posix/src/posix-inode-fd-ops.c b/xlators/storage/posix/src/posix-inode-fd-ops.c index 4a7385cd271..08916c6d89f 100644 --- a/xlators/storage/posix/src/posix-inode-fd-ops.c +++ b/xlators/storage/posix/src/posix-inode-fd-ops.c @@ -2860,26 +2860,6 @@ out: return ret; } -gf_boolean_t -posix_is_mds_xattr (const char *name) -{ - regex_t regcmpl; - char *key = {"trusted.glusterfs.*.mds$"}; - regmatch_t result[1] = {{0} }; - gf_boolean_t status = _gf_false; - - if (regcomp (®cmpl, key, REG_EXTENDED)) { - goto out; - } - if (!regexec (®cmpl, name, 1, result, 0)) { - status = _gf_true; - goto out; - } -out: - regfree(®cmpl); - return status; -} - /** * posix_getxattr - this function returns a dictionary with all the @@ -2942,13 +2922,6 @@ posix_getxattr (call_frame_t *frame, xlator_t *this, goto out; } - if (name && posix_is_mds_xattr (name)) { - op_ret = -1; - op_errno = ENOATTR; - goto out; - } - - if (loc->inode && IA_ISDIR(loc->inode->ia_type) && name && ZR_FILE_CONTENT_REQUEST(name)) { ret = posix_get_file_contents (this, loc->gfid, &name[15], @@ -3332,10 +3305,6 @@ posix_getxattr (call_frame_t *frame, xlator_t *this, goto ignore; } - if (posix_is_mds_xattr (keybuffer)) { - goto ignore; - } - memset (value_buf, '\0', XATTR_VAL_BUF_SIZE); have_val = _gf_false; size = sys_lgetxattr (real_path, keybuffer, value_buf, |