summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMohit Agrawal <moagrawa@redhat.com>2018-05-30 15:09:29 +0530
committerShyamsundar Ranganathan <srangana@redhat.com>2018-08-16 14:31:37 +0000
commitb21b83af0baab3c651b6fd2e4657ca66080a7bcb (patch)
tree410cc1153766cc4f775ca06257db22ff56667cfb
parente09e3549c293f0d7f448ebb70a4e9fcc671ea098 (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 Backport of: > BUG: 1584098 > Change-Id: I86cd2b2ee08488cb6c12f407694219d57c5361dc > Signed-off-by: Mohit Agrawal <moagrawa@redhat.com> Change-Id: I86cd2b2ee08488cb6c12f407694219d57c5361dc fixes: bz#1611116 Signed-off-by: Mohit Agrawal <moagrawa@redhat.com>
-rw-r--r--xlators/cluster/dht/src/dht-common.c4
-rw-r--r--xlators/storage/posix/src/posix-inode-fd-ops.c31
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 47521d160ee..5a5ddacd7f6 100644
--- a/xlators/cluster/dht/src/dht-common.c
+++ b/xlators/cluster/dht/src/dht-common.c
@@ -4395,6 +4395,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 12bd41b3d04..e0d8f258fce 100644
--- a/xlators/storage/posix/src/posix-inode-fd-ops.c
+++ b/xlators/storage/posix/src/posix-inode-fd-ops.c
@@ -2863,26 +2863,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 (&regcmpl, key, REG_EXTENDED)) {
- goto out;
- }
- if (!regexec (&regcmpl, name, 1, result, 0)) {
- status = _gf_true;
- goto out;
- }
-out:
- regfree(&regcmpl);
- return status;
-}
-
/**
* posix_getxattr - this function returns a dictionary with all the
@@ -2944,13 +2924,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],
@@ -3333,10 +3306,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,