diff options
| author | Mohit Agrawal <moagrawa@redhat.com> | 2018-05-30 15:09:29 +0530 | 
|---|---|---|
| committer | Shyamsundar Ranganathan <srangana@redhat.com> | 2018-08-16 14:31:37 +0000 | 
| commit | b21b83af0baab3c651b6fd2e4657ca66080a7bcb (patch) | |
| tree | 410cc1153766cc4f775ca06257db22ff56667cfb | |
| parent | e09e3549c293f0d7f448ebb70a4e9fcc671ea098 (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.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 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 (®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 @@ -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,  | 
