Closed-source macfuse 4.x has broken compatibility with osxfuse 3.x: it passes an additional 64-bit field (flags) after RenameIn regardless that we don't enable the support for RENAME_SWAP/RENAME_EXCL. The simplest fix is just to check for the presence of all-zero flags and strip them when they're present.
This package allows for writing and mounting user-space file systems from Go. Install it as follows:
go get -u github.com/jacobsa/fuse
Afterward, see the documentation for the following three packages:
Package fuse provides support for mounting a new file system and reading requests from the kernel.
Package fuseops enumerates the supported requests from the kernel, and provides documentation on their semantics.
Package fuseutil, in particular the
FileSysteminterface, provides a convenient way to create a file system type and export it to the kernel via
Make sure to also see the sub-packages of the samples package for examples and tests.
This package owes its inspiration and most of its kernel-related code to bazil.org/fuse.