patches/dht-fsetxattr.patch | 67 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 67 insertions(+)
New commits:
commit 08e677c27e8296a9be2659405c969aa9784510c6
Author: Jeff Darcy <jdarcy(a)redhat.com>
Date: Tue Jan 25 10:27:06 2011 -0500
Patch for DHT using wrong subvolume via default_fsetxattr.
diff --git a/patches/dht-fsetxattr.patch b/patches/dht-fsetxattr.patch
new file mode 100644
index 0000000..4abee52
--- /dev/null
+++ b/patches/dht-fsetxattr.patch
@@ -0,0 +1,67 @@
+diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c
+index e204726..df0033a 100644
+--- a/xlators/cluster/dht/src/dht-common.c
++++ b/xlators/cluster/dht/src/dht-common.c
+@@ -2068,6 +2068,50 @@ err:
+ return 0;
+ }
+
++int
++dht_fsetxattr (call_frame_t *frame, xlator_t *this,
++ fd_t *fd, dict_t *xattr, int flags)
++{
++ xlator_t *subvol = NULL;
++ dht_local_t *local = NULL;
++ int op_errno = EINVAL;
++
++ VALIDATE_OR_GOTO (frame, err);
++ VALIDATE_OR_GOTO (this, err);
++ VALIDATE_OR_GOTO (fd, err);
++ VALIDATE_OR_GOTO (fd->inode, err);
++
++ subvol = dht_subvol_get_cached (this, fd->inode);
++ if (!subvol) {
++ gf_log (this->name, GF_LOG_DEBUG,
++ "no cached subvolume for fd=%p", fd);
++ op_errno = EINVAL;
++ goto err;
++ }
++
++ local = dht_local_init (frame);
++ if (!local) {
++ op_errno = ENOMEM;
++ gf_log (this->name, GF_LOG_ERROR,
++ "Out of memory");
++ goto err;
++ }
++
++ local->inode = inode_ref (fd->inode);
++ local->call_cnt = 1;
++
++ STACK_WIND (frame, dht_err_cbk, subvol, subvol->fops->fsetxattr,
++ fd, xattr, flags);
++
++ return 0;
++
++err:
++ op_errno = (op_errno == -1) ? errno : op_errno;
++ DHT_STACK_UNWIND (setxattr, frame, -1, op_errno);
++
++ return 0;
++}
++
+
+ int
+ dht_removexattr (call_frame_t *frame, xlator_t *this,
+diff --git a/xlators/cluster/dht/src/dht.c b/xlators/cluster/dht/src/dht.c
+index 93d01f1..3f81ba7 100644
+--- a/xlators/cluster/dht/src/dht.c
++++ b/xlators/cluster/dht/src/dht.c
+@@ -491,6 +491,7 @@ struct xlator_fops fops = {
+ .access = dht_access,
+ .readlink = dht_readlink,
+ .setxattr = dht_setxattr,
++ .fsetxattr = dht_fsetxattr,
+ .getxattr = dht_getxattr,
+ .removexattr = dht_removexattr,
+ .open = dht_open,
Show replies by date