A Go package for implementing a FUSE file system (fork with 'almost' zero-copy read/write)
Go to file
Ka-Hing Cheung e7bcad2083 fix getxattr and listxattr (#72)
previously, this will fail if /mnt/file doesn't have an xattr:

```
listxattr("/mnt/file", 0x7fe8b3686830, 256) = -1 EIO (Input/output error)
```

We should be returning the actual size only if the input size is
zero. Related issue is if the filesystem returns ERANGE, we should
propagate that error instead of returning the actual size.

Replaced go-xattr usage with x/sys/unix so we can test this.
2019-12-11 09:41:37 +01:00
fsutil Fixed fdatasync build errors on linux. 2015-03-24 12:32:56 +11:00
fuseops add support for fallocate (#66) 2019-10-26 10:15:00 +02:00
fusetesting replace imports of "golang.org/x/net/context" with "context" 2018-02-07 19:18:23 +00:00
fuseutil add support for fallocate (#66) 2019-10-26 10:15:00 +02:00
internal add support for fallocate (#66) 2019-10-26 10:15:00 +02:00
samples fix getxattr and listxattr (#72) 2019-12-11 09:41:37 +01:00
.gitignore Ignore vim swap files. 2015-08-11 05:54:05 +00:00
.travis.yml .travis.yml: pin to macOS 10.12 2019-09-18 16:16:40 +02: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 replace imports of "golang.org/x/net/context" with "context" 2018-02-07 19:18:23 +00:00
conversions.go fix getxattr and listxattr (#72) 2019-12-11 09:41:37 +01:00
debug.go add support for fallocate (#66) 2019-10-26 10:15:00 +02: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 replace imports of "golang.org/x/net/context" with "context" 2018-02-07 19:18:23 +00:00
mount_config.go try mounting without fusermount(1) first 2019-09-19 08:50:12 +02:00
mount_darwin.go Unexport OSXFUSEPaths. 2016-10-16 08:56:44 +01:00
mount_linux.go open /dev/fuse in blocking mode so the runtime does not use a poller 2019-09-19 08:50:12 +02:00
mount_test.go fix formatting directives (to pass go test) 2019-09-16 18:28:45 +02:00
mounted_file_system.go replace imports of "golang.org/x/net/context" with "context" 2018-02-07 19:18:23 +00: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.