Kernel struct dentry maps to fuse.Node, identified on wire with fuse.NodeID.
Need to explore how to maintain it in sync with the code. Everything else is optional.įor example, if a node does not implement Remove(), unlink(2) on it will always fail.ĭocumentation of possible interfaces is severely lacking right now. Requests are served by methods on the node itself, not a global dispatch function.įeel free to construct an in-memory tree, for simple filesystems.Ī Node must implement Attr(). It's also significantly closer to the wire protocol. Instead, it mirrors kernel data structures, with uint64 handles to objects. Static int hello_getattr(const char *path, struct stat *stbuf) īazil doesn't do either inode number or path dispatching.
Numbered message types, wire structures, various constantsį/doxygen/structfuse_lowlevel_ops.htmlį/doxygen/structfuse_operations.html Kernel APIīazil uses /bin/fusermount as subprocess (to handle /etc/mtab andįrom there on, it's just reads and writes on the fd.Ĭ FUSE's low-level API exposes kernel requests and responses quite directly.ĭispatches in inode numbers, explicit response. Many things you read about "FUSE" are about C FUSE, and don't apply to Bazil.įor example: automatic inode numbering, multithreading. On Linux: uses setuid fusermount userspace mount helper from the C FUSE package. OS X needs the fusefs kernel module from OSXFUSE. Pure-Go implementation of userspace server for the Linux and OS X kernel protocols.
Russ seems to develop mostly on OS X, Tv is a Linux person.īoth should work. Hopefully our contributions help improve the state of the ecosystem. But call it "Bazil FUSE" if you need to.) (Strictly, Bazil is an umbrella project, /fuse is the FUSE library. Russ Cox's fuse library can be found at /p/rsc/fuseĬ/p/rsc/source/browse/#hg%2Ffuseīazil is a fork of it. Personally, I think writing a library from scratch would be less painful. The structure of its API leaves a lot to be desired. Han-Wen Nienhuys wrote a go-fuse library.
named exactly the same as the kernel API :(Īll the things you'd expect from a project hosted at SourceForge in 2013.Ĭ libraries more or less API compatible with the C FUSE API. The C library is the reference implementation With a request-response protocol spoken over a fd