A Go package for implementing a FUSE file system (fork with 'almost' zero-copy read/write)
Go to file
Ka-Hing Cheung 1ab97fb2eb handle forget inline instead of in goroutine
when we are under memory pressure, or echo 3 > /proc/sys/vm/drop_caches,
kernel can send us many forget ops at the same time if we have lots of
inodes in memory. Running them all in goroutines can lead to even more
memory usage and eventually OOM.
2017-10-11 07:44:47 +11:00
fsutil Fixed fdatasync build errors on linux. 2015-03-24 12:32:56 +11:00
fuseops added tests and enhanced comments 2017-05-11 14:45:40 -07:00
fusetesting Implement GetTimes for linux. 2016-01-10 23:27:28 +00:00
fuseutil handle forget inline instead of in goroutine 2017-10-11 07:44:47 +11:00
internal GetXattr/ListXattr implementation 2017-05-11 14:45:40 -07:00
samples memfs_test: touch up the style of xattr tests. 2017-05-12 12:59:01 +10:00
.gitignore Ignore vim swap files. 2015-08-11 05:54:05 +00:00
.travis.yml .travis.yml: enable macOS builds too. 2017-05-13 15:02:33 +10:00
LICENSE Upated the license file. 2015-07-24 15:40:31 +10:00
README.md Reworked the readme. 2015-07-27 11:53:29 +10:00
connection.go GetXattr/ListXattr implementation 2017-05-11 14:45:40 -07:00
conversions.go added tests and enhanced comments 2017-05-11 14:45:40 -07:00
debug.go SetXattr support 2017-05-11 14:45:40 -07:00
doc.go Added a callout to fuseutil.NewFileSystemServer. 2015-03-25 09:18:56 +11:00
errors.go added tests and enhanced comments 2017-05-11 14:45:40 -07:00
freelists.go Began fixing Connection. 2015-07-28 16:13:18 +10:00
mount.go Update documentation for Go style. 2017-01-03 10:47:18 +11:00
mount_config.go Move osxfuse-specific config into mount_darwin.go. 2016-10-16 08:56:40 +01:00
mount_darwin.go Unexport OSXFUSEPaths. 2016-10-16 08:56:44 +01:00
mount_linux.go Kill off silly fusermount screen scraping. 2016-02-29 02:47:56 +00:00
mount_test.go Restore TestNonEmptyMountPoint for Linux. 2016-02-29 13:44:02 +11:00
mounted_file_system.go Update documentation for Go style. 2017-01-03 10:47:18 +11:00
ops.go Removed special handling of statfs. 2015-09-09 09:49:54 +10:00
unmount.go Update documentation for Go style. 2017-01-03 10:47:18 +11:00
unmount_linux.go Fixed a build error on Linux. 2015-07-24 16:22:33 +10:00
unmount_std.go Fixed unmount_std.go. 2015-07-24 16:21:18 +10:00

README.md

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.