A Go package for implementing a FUSE file system (fork with 'almost' zero-copy read/write)
Go to file
Vitaliy Filippov 7a12c251bb Expose Gid field in OpContext 2024-10-23 20:49:51 +03:00
.github/workflows GitHub Actions: use Go 1.19 2022-09-06 08:43:12 +02:00
fsutil remove naked returns across the code base (#75) 2020-01-28 10:10:08 +01:00
fuseops Expose Gid field in OpContext 2024-10-23 20:49:51 +03:00
fusetesting Migrate goo.gl links to TinyURL. 2024-07-21 15:00:45 +10:00
fuseutil Add READDIRPLUS support 2024-10-23 20:49:51 +03:00
internal Use fuse_kernel_linux for Windows builds too 2024-10-23 20:49:25 +03:00
samples MountConfig: add FuseImpl field to select macOS FUSE implementation 2024-09-09 14:50:23 +02:00
.gitignore Add configuration to control async reads (#105) 2021-09-04 17:48:39 +02:00
LICENSE Upated the license file. 2015-07-24 15:40:31 +10:00
README.md Switch from Travis CI to GitHub Actions (#111) 2021-11-07 17:30:55 +01:00
connection.go Add READDIRPLUS support 2024-10-23 20:49:51 +03:00
conversions.go Expose Gid field in OpContext 2024-10-23 20:49:51 +03:00
debug.go debug: print operation name, not just OK (#165) 2024-06-26 16:34:36 +02:00
doc.go gofmt with Go 1.19 2022-09-06 08:42:56 +02:00
errors.go added tests and enhanced comments 2017-05-11 14:45:40 -07:00
freelists.go InMessage is initialized with a storage allocated before reads (#110) 2021-10-28 23:41:51 +02:00
go.mod Bump golang.org/x/net from 0.17.0 to 0.23.0 (#159) 2024-04-19 19:18:48 +02:00
go.sum Bump golang.org/x/net from 0.17.0 to 0.23.0 (#159) 2024-04-19 19:18:48 +02:00
mount.go Add more debugging logs to the mounting process so we get more visibility for customer issues (#130) 2022-09-06 08:54:02 +02:00
mount_config.go Add READDIRPLUS support 2024-10-23 20:49:51 +03:00
mount_darwin.go MountConfig: add FuseImpl field to select macOS FUSE implementation 2024-09-09 14:50:23 +02:00
mount_linux.go directmount: take fsname from opts, not cfg 2024-07-21 10:39:25 +02:00
mount_linux_test.go allow passing open /dev/fuse file descriptors (#124) 2022-05-31 22:22:54 +02:00
mount_test.go Remove TestNonEmptyMountPoint; libfuse3 allows non-empty mountpoints 2021-06-05 23:14:29 +02:00
mounted_file_system.go add support for retrieving UID GID PID for each fuseops, ala FUSE-C fuse_get_context() 2022-10-16 10:46:58 +02:00
ops.go Add support for max_pages and increase to 256 (#96) 2021-08-02 23:29:12 +02:00
unmount.go Update documentation for Go style. 2017-01-03 10:47:18 +11:00
unmount_linux.go prefer fusermount3 (from FUSE 3), fall back to old fusermount 2020-04-23 21:10:43 +02:00
unmount_std.go GitHub Actions: upgrade to latest stable version of Go 1.17 2022-03-03 09:31:36 +01:00
writev.go Implement vectored read support 2022-03-03 09:25:18 +01:00

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.