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. |
||
---|---|---|
fsutil | ||
fuseops | ||
fusetesting | ||
fuseutil | ||
internal | ||
samples | ||
.gitignore | ||
.travis.yml | ||
LICENSE | ||
README.md | ||
connection.go | ||
conversions.go | ||
debug.go | ||
doc.go | ||
errors.go | ||
freelists.go | ||
go.mod | ||
go.sum | ||
mount.go | ||
mount_config.go | ||
mount_darwin.go | ||
mount_linux.go | ||
mount_test.go | ||
mounted_file_system.go | ||
ops.go | ||
unmount.go | ||
unmount_linux.go | ||
unmount_std.go | ||
writev.go |
README.md
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
FileSystem
interface, provides a convenient way to create a file system type and export it to the kernel viafuse.Mount
.
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.