On Fri, 21 Aug 2009 00:20:48 +0200, Russ Weeks <rweeks at gmail.com> wrote:

> Hi,
>
> I'd like to export a FUSE filesystem over NFS.  I'm working with the
> fusexmp_fh filesystem, which is a really simple "loopback" filesystem
> from the Linux FUSE project.
>
> I got the filesystem to compile and mount properly thanks to the
> instructions on the Wiki.  Locally, everything looks good.  I can cd
> to the mount point and see exactly what I expect.
>
> When I try to share the filesystem, I get this error:
>
> sharemgr add-share -s /tmp/fuse fuse-group
> Failed to enable share for "nfs": system error
>
> Where fuse-group is configured for NFS. Sharing a regular directory,
> ie. /tmp/blah, works fine.
>
> When I run the above command through truss, I see the following output
> during invocation of nfs_enable_share (trimmed):
>
> /1 at 1:         -> libshare:sa_get_property(0x8097d48, 0x0, 0x30,  
> 0xfed96109)
> /1 at 1:         <- libshare:sa_get_property() = 0
> /1 at 1:         -> libc:exportfs(0x806fcb8, 0x80476a0, 0x30, 0xfed96109)
> /1:     nfssys(2, 0x08047638)                           Err#89 ENOSYS
>
> When I try to share a regular directory, the nfssys call returns 0.
>
> Any advice here? I'm willing to do the legwork to put in a low-medium
> effort fix, but if this is a fundamental problem with FUSE<->NFS I'd
> like to know up front.

I bet when you dtrace the kernel exportfs syscall s entry exportfs()  
you'll find that it fails
in treeclimb_export() because your underlaying FUSE file system does
not implement VOP_FID(). this is during the time we attempt
build the servers namespace  for the export.

http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/fs/nfs/nfs_export.c#997
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/fs/nfs/nfs4_srv_ns.c#555
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/fs/nfs/nfs4_srv_ns.c#vop_fid_pseudo

dtrace will tell you for sure.

-- 
---
frankB

Reply via email to