patches/dht-fsetxattr.patch | 67 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+)
New commits: commit 08e677c27e8296a9be2659405c969aa9784510c6 Author: Jeff Darcy jdarcy@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,