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