diff options
| -rw-r--r-- | xlators/storage/posix/src/posix-inode-fd-ops.c | 33 | 
1 files changed, 33 insertions, 0 deletions
diff --git a/xlators/storage/posix/src/posix-inode-fd-ops.c b/xlators/storage/posix/src/posix-inode-fd-ops.c index fc7375e43ff..496f6a7905b 100644 --- a/xlators/storage/posix/src/posix-inode-fd-ops.c +++ b/xlators/storage/posix/src/posix-inode-fd-ops.c @@ -27,6 +27,7 @@  #include <sys/uio.h>  #include <unistd.h>  #include <ftw.h> +#include <regex.h>  #ifndef GF_BSD_HOST_OS  #include <alloca.h> @@ -2802,6 +2803,27 @@ 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   *                  key:value pair present as xattr. used for @@ -2856,6 +2878,13 @@ 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], @@ -3234,6 +3263,10 @@ 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,  | 
