> Using
http://rainemu.swishparty.co.uk/git/zfs/ master (with some
> changes to let compile it, see below) I get a hang of following
> command:
> while echo -n .; do zpool status >/dev/null; done
> This runs a time successfully (a few seconds) and then it hangs (no
> more dots). Any command talking to /var/run/zfs/zfs_socket then does
> no more work, too, so the socket is dead. Note that my machine is SMP
> (two cores). Also note that the zfs filesystem stays online and
> accessible, so only the socket serving routine is affected.
> Can somebody confirm this or is my problem local only? Thanks.
> Diff attached. Notes to the diff:
> I changed ZFS_IOC because the numbering of commands might differ
> between ZFS versions. So if you try out several zfs versions in
> parallel is too dangerous to perhaps invoke the wrong zpool command to
> a different running zfs-fuse daemon. I recommend others trying out
> different zfs versions in parallel to give each version tested an
> unique ZFS_IOC like me, to prevent a wrong zpool to be able to talk to
> zfs-fuse successfully.
> Also ENOATTR is only present in xfs; Grepping the Internet I got the
> impression that the correct errno should be EDOM but I really do not
> know. And attr/xattr.h is at sys/xattr.h at my side.
> zoo:~/src/zfs/bleedingedge/zfs/src# cat /etc/debian_version
> 5.0.4
> zoo:~/src/zfs/bleedingedge/zfs/src# uname -a
> Linux zoo 2.6.26-2-686 #1 SMP Wed Nov 4 20:45:37 UTC 2009 i686 GNU/
> Linux
> zoo:~/src/zfs/bleedingedge/zfs/src# git diff master
> diff --git a/.gitignore b/.gitignore
> index ddea9d6..3706540 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -4,6 +4,8 @@
> *.swp
> *.orig
> *.sconsign.dblite
> +*.lo
> +*.la
> src/zfs-fuse/zfs-fuse
> src/cmd/zdb/zdb
> @@ -11,3 +13,18 @@ src/cmd/zfs/zfs
> src/cmd/zpool/zpool
> src/cmd/ztest/ztest
> +/src/cmd/zstreamdump/zstreamdump
> +/src/lib/libumem/.deps/
> +/src/lib/libumem/.libs/
> +/src/lib/libumem/Doxyfile
> +/src/lib/libumem/Makefile
> +/src/lib/libumem/config.h
> +/src/lib/libumem/config.log
> +/src/lib/libumem/config.status
> +/src/lib/libumem/libtool
> +/src/lib/libumem/stamp-h1
> +/src/lib/libumem/umem.spec
> +/src/lib/libumem/umem_test
> +/src/lib/libumem/umem_test2
> +/src/lib/libumem/umem_test3
> +
> diff --git a/src/lib/libzfscommon/include/sys/fs/zfs.h b/src/lib/
> libzfscommon/include/sys/fs/zfs.h
> index 82cc2c9..08d62d4 100644
> --- a/src/lib/libzfscommon/include/sys/fs/zfs.h
> +++ b/src/lib/libzfscommon/include/sys/fs/zfs.h
> @@ -666,7 +666,7 @@ typedef struct ddt_histogram {
> /*
> * /dev/zfs ioctl numbers.
> */
> -#define ZFS_IOC ('Z' << 8)
> +#define ZFS_IOC (('Z'+2) << 8)
> typedef enum zfs_ioc {
> ZFS_IOC_POOL_CREATE = ZFS_IOC,
> diff --git a/src/zfs-fuse/zfs_operations.c b/src/zfs-fuse/
> zfs_operations.c
> index 260adbb..3448181 100644
> --- a/src/zfs-fuse/zfs_operations.c
> +++ b/src/zfs-fuse/zfs_operations.c
> @@ -34,7 +34,7 @@
> #include <sys/zfs_vfsops.h>
> #include <sys/zfs_znode.h>
> #include <sys/mode.h>
> -#include <attr/xattr.h>
> +#include <sys/xattr.h>
> #include <sys/fcntl.h>
> #include <string.h>
> @@ -374,7 +374,7 @@ static void zfsfuse_getxattr(fuse_req_t req,
> fuse_ino_t ino, const char *name,
> vnode_t *new_vp = NULL;
> error = VOP_LOOKUP(vp, (char *) name, &new_vp, NULL, 0, NULL,
> &cred, NULL, NULL, NULL);
> if (error) {
> - error = ENOATTR;
> + error = EDOM;
> goto out;
> }
> VN_RELE(vp);
> @@ -445,7 +445,7 @@ out:
> VN_RELE(dvp);
> ZFS_EXIT(zfsvfs);
> if (error == ENOENT)
> - error = ENOATTR;
> + error = EDOM;
> fuse_reply_err(req,error);
> }
> --
> To post to this group, send email to zfs-fuse@googlegroups.com
> To visit our Web site, click on http://zfs-fuse.net/