A Go package for implementing a FUSE file system (fork with 'almost' zero-copy read/write)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Vitaliy Filippov c02e24f8ce Publish file mode conversion functions 1 month ago
.github/workflows GitHub Actions: use Go 1.19 3 months ago
fsutil remove naked returns across the code base (#75) 3 years ago
fuseops Add device number support 1 month ago
fusetesting remove naked returns across the code base (#75) 3 years ago
fuseutil Fallback from BatchForgetOp to a series of ForgetInodeOp if unsupported (#126) 5 months ago
internal Allow to use "zero-copy" writes 1 month ago
samples Remove PID zero condition from sample memfs (#131) 2 months ago
.gitignore Add configuration to control async reads (#105) 1 year ago
LICENSE Upated the license file. 7 years ago
README.md Switch from Travis CI to GitHub Actions (#111) 1 year ago
connection.go Allow to use "zero-copy" writes 1 month ago
conversions.go Publish file mode conversion functions 1 month ago
debug.go Implement vectored read support 9 months ago
doc.go gofmt with Go 1.19 3 months ago
errors.go added tests and enhanced comments 6 years ago
freelists.go InMessage is initialized with a storage allocated before reads (#110) 1 year ago
go.mod update go.mod to pull in latest x/sys and x/net 7 months ago
go.sum Fallback from BatchForgetOp to a series of ForgetInodeOp if unsupported (#126) 5 months ago
mount.go Add more debugging logs to the mounting process so we get more visibility for customer issues (#130) 3 months ago
mount_config.go Implement vectored read support 9 months ago
mount_darwin.go Add more debugging logs to the mounting process so we get more visibility for customer issues (#130) 3 months ago
mount_linux.go Add more debugging logs to the mounting process so we get more visibility for customer issues (#130) 3 months ago
mount_linux_test.go allow passing open /dev/fuse file descriptors (#124) 6 months ago
mount_test.go Remove TestNonEmptyMountPoint; libfuse3 allows non-empty mountpoints 2 years ago
mounted_file_system.go add support for retrieving UID GID PID for each fuseops, ala FUSE-C fuse_get_context() 2 months ago
ops.go Add support for max_pages and increase to 256 (#96) 1 year ago
unmount.go Update documentation for Go style. 6 years ago
unmount_linux.go prefer fusermount3 (from FUSE 3), fall back to old fusermount 3 years ago
unmount_std.go GitHub Actions: upgrade to latest stable version of Go 1.17 9 months ago
writev.go Implement vectored read support 9 months ago

README.md

ci GoDoc

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 via fuse.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.