summaryrefslogtreecommitdiffstats
path: root/xlators/storage/posix/src/posix.c
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/storage/posix/src/posix.c')
-rw-r--r--xlators/storage/posix/src/posix.c54
1 files changed, 31 insertions, 23 deletions
diff --git a/xlators/storage/posix/src/posix.c b/xlators/storage/posix/src/posix.c
index da8e58efd8c..50dae5db18d 100644
--- a/xlators/storage/posix/src/posix.c
+++ b/xlators/storage/posix/src/posix.c
@@ -156,8 +156,8 @@ posix_lookup (call_frame_t *frame, xlator_t *this,
}
if (xdata && (op_ret == 0)) {
- xattr = posix_lookup_xattr_fill (this, real_path, loc,
- xdata, &buf);
+ xattr = posix_xattr_fill (this, real_path, loc, NULL, -1, xdata,
+ &buf);
}
if (priv->update_pgfid_nlinks) {
@@ -248,8 +248,8 @@ posix_stat (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)
goto out;
}
if (xdata)
- xattr_rsp = posix_lookup_xattr_fill (this, real_path, loc,
- xdata, &buf);
+ xattr_rsp = posix_xattr_fill (this, real_path, loc, NULL, -1,
+ xdata, &buf);
op_ret = 0;
@@ -3433,10 +3433,8 @@ posix_links_in_same_directory (char *dirpath, int count, inode_t *leaf_inode,
gf_entry = gf_dirent_for_name (entry->d_name);
gf_entry->inode = inode_ref (leaf_inode);
gf_entry->dict
- = posix_lookup_xattr_fill (this,
- temppath,
- &loc, xdata,
- NULL);
+ = posix_xattr_fill (this, temppath, &loc, NULL,
+ -1, xdata, NULL);
list_add_tail (&gf_entry->list, &head->list);
loc_wipe (&loc);
}
@@ -4301,7 +4299,7 @@ _handle_fsetxattr_keyvalue_pair (dict_t *d, char *k, data_t *v,
filler = tmp;
- return posix_fhandle_pair (filler->this, filler->fd, k, v,
+ return posix_fhandle_pair (filler->this, filler->fdnum, k, v,
filler->flags);
}
@@ -4337,7 +4335,7 @@ posix_fsetxattr (call_frame_t *frame, xlator_t *this,
dict_del (dict, GFID_XATTR_KEY);
dict_del (dict, GF_XATTR_VOL_ID_KEY);
- filler.fd = _fd;
+ filler.fdnum = _fd;
filler.this = this;
#ifdef GF_DARWIN_HOST_OS
filler.flags = map_xattr_flags(flags);
@@ -4653,7 +4651,7 @@ _posix_handle_xattr_keyvalue_pair (dict_t *d, char *k, data_t *v,
size = sys_lgetxattr (filler->real_path, k,
(char *)array, v->len);
} else {
- size = sys_fgetxattr (filler->fd, k, (char *)array,
+ size = sys_fgetxattr (filler->fdnum, k, (char *)array,
v->len);
}
@@ -4676,9 +4674,10 @@ _posix_handle_xattr_keyvalue_pair (dict_t *d, char *k, data_t *v,
k, strerror (op_errno));
else
gf_log (this->name, GF_LOG_ERROR,
- "fgetxattr failed on fd=%d while doing "
- "xattrop: Key:%s (%s)",
- filler->fd,
+ "fgetxattr failed on gfid=%s "
+ "while doing xattrop: "
+ "Key:%s (%s)",
+ uuid_utoa (filler->fd->inode->gfid),
k, strerror (op_errno));
}
@@ -4712,7 +4711,7 @@ _posix_handle_xattr_keyvalue_pair (dict_t *d, char *k, data_t *v,
size = sys_lsetxattr (filler->real_path, k, array,
v->len, 0);
} else {
- size = sys_fsetxattr (filler->fd, k, (char *)array,
+ size = sys_fsetxattr (filler->fdnum, k, (char *)array,
v->len, 0);
}
}
@@ -4731,8 +4730,9 @@ unlock:
k, strerror (op_errno));
else
gf_log (this->name, GF_LOG_ERROR,
- "fsetxattr failed on fd=%d while doing xattrop: "
- "key=%s (%s)", filler->fd,
+ "fsetxattr failed on gfid=%s while doing xattrop: "
+ "key=%s (%s)",
+ uuid_utoa (filler->fd->inode->gfid),
k, strerror (op_errno));
op_ret = -1;
@@ -4748,8 +4748,9 @@ unlock:
k, strerror (-size));
else
gf_log (this->name, GF_LOG_DEBUG,
- "dict_set_bin failed (fd=%d): "
- "key=%s (%s)", filler->fd,
+ "dict_set_bin failed (gfid=%s): "
+ "key=%s (%s)",
+ uuid_utoa (filler->fd->inode->gfid),
k, strerror (-size));
op_ret = -1;
@@ -4812,7 +4813,7 @@ do_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd,
}
filler.this = this;
- filler.fd = _fd;
+ filler.fdnum = _fd;
filler.real_path = real_path;
filler.flags = (int)optype;
filler.inode = inode;
@@ -4967,6 +4968,7 @@ posix_fstat (call_frame_t *frame, xlator_t *this,
int32_t op_errno = 0;
struct iatt buf = {0,};
struct posix_fd *pfd = NULL;
+ dict_t *xattr_rsp = NULL;
int ret = -1;
struct posix_private *priv = NULL;
@@ -4998,12 +5000,18 @@ posix_fstat (call_frame_t *frame, xlator_t *this,
goto out;
}
+ if (xdata)
+ xattr_rsp = posix_xattr_fill (this, NULL, NULL, fd, _fd, xdata,
+ &buf);
+
op_ret = 0;
out:
SET_TO_OLD_FS_ID ();
- STACK_UNWIND_STRICT (fstat, frame, op_ret, op_errno, &buf, NULL);
+ STACK_UNWIND_STRICT (fstat, frame, op_ret, op_errno, &buf, xattr_rsp);
+ if (xattr_rsp)
+ dict_unref (xattr_rsp);
return 0;
}
@@ -5277,8 +5285,8 @@ posix_entry_xattr_fill (xlator_t *this, inode_t *inode,
return NULL;
}
- return posix_lookup_xattr_fill (this, entry_path,
- &tmp_loc, dict, stbuf);
+ return posix_xattr_fill (this, entry_path, &tmp_loc, NULL, -1, dict,
+ stbuf);
}