diff options
Diffstat (limited to 'xlators/storage/posix/src/posix-helpers.c')
-rw-r--r-- | xlators/storage/posix/src/posix-helpers.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/xlators/storage/posix/src/posix-helpers.c b/xlators/storage/posix/src/posix-helpers.c index 0e187e020..3a66ecfc2 100644 --- a/xlators/storage/posix/src/posix-helpers.c +++ b/xlators/storage/posix/src/posix-helpers.c @@ -781,7 +781,10 @@ posix_handle_pair (xlator_t *this, const char *real_path, int sys_ret = -1; int ret = 0; - if (ZR_FILE_CONTENT_REQUEST(key)) { + if (XATTR_IS_PATHINFO (key)) { + ret = -EACCES; + goto out; + } else if (ZR_FILE_CONTENT_REQUEST(key)) { ret = posix_set_file_contents (this, real_path, key, value, flags); } else { @@ -789,6 +792,7 @@ posix_handle_pair (xlator_t *this, const char *real_path, value->len, flags); if (sys_ret < 0) { + ret = -errno; if (errno == ENOTSUP) { GF_LOG_OCCASIONALLY(gf_xattr_enotsup_log, this->name,GF_LOG_WARNING, @@ -820,7 +824,6 @@ posix_handle_pair (xlator_t *this, const char *real_path, #endif /* DARWIN */ } - ret = -errno; goto out; } } @@ -835,10 +838,16 @@ posix_fhandle_pair (xlator_t *this, int fd, int sys_ret = -1; int ret = 0; + if (XATTR_IS_PATHINFO (key)) { + ret = -EACCES; + goto out; + } + sys_ret = sys_fsetxattr (fd, key, value->data, value->len, flags); if (sys_ret < 0) { + ret = -errno; if (errno == ENOTSUP) { GF_LOG_OCCASIONALLY(gf_xattr_enotsup_log, this->name,GF_LOG_WARNING, @@ -865,7 +874,6 @@ posix_fhandle_pair (xlator_t *this, int fd, #endif /* DARWIN */ } - ret = -errno; goto out; } |