A Go package for implementing a FUSE file system (fork with 'almost' zero-copy read/write)
Go to file
Vitaliy Filippov a7dcac672f Fix RenameOp compatibility with macfuse 4.x
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.
2021-10-08 17:26:53 +03:00
fsutil remove naked returns across the code base (#75) 2020-01-28 10:10:08 +01:00
fuseops Allow to use "zero-copy" writes 2021-09-01 14:14:51 +03:00
fusetesting remove naked returns across the code base (#75) 2020-01-28 10:10:08 +01:00
fuseutil Introduce VectoredReadOp 2021-09-01 14:14:15 +03:00
internal Allow to use "zero-copy" writes 2021-09-01 14:14:51 +03:00
samples Add vectored read to readbenchfs 2021-09-01 14:14:15 +03:00
.gitignore Ignore vim swap files. 2015-08-11 05:54:05 +00:00
.travis.yml travis: switch to Go 1.16 2021-06-05 22:53:39 +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 Allow to use "zero-copy" writes 2021-09-01 14:14:51 +03:00
conversions.go Fix RenameOp compatibility with macfuse 4.x 2021-10-08 17:26:53 +03:00
debug.go Introduce VectoredReadOp 2021-09-01 14:14:15 +03: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 remove naked returns across the code base (#75) 2020-01-28 10:10:08 +01:00
go.mod declare a go module 2021-06-05 22:48:45 +02:00
go.sum declare a go module 2021-06-05 22:48:45 +02:00
mount.go Use newer mounting method (similar to fusermount) with macfuse 4.x 2021-09-30 18:31:06 +03:00
mount_config.go Introduce VectoredReadOp 2021-09-01 14:14:15 +03:00
mount_darwin.go Use newer mounting method (similar to fusermount) with macfuse 4.x 2021-09-30 18:31:06 +03:00
mount_linux.go Use newer mounting method (similar to fusermount) with macfuse 4.x 2021-09-30 18:31:06 +03:00
mount_test.go Remove TestNonEmptyMountPoint; libfuse3 allows non-empty mountpoints 2021-06-05 23:14:29 +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 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 remove naked returns across the code base (#75) 2020-01-28 10:10:08 +01:00
writev.go Introduce VectoredReadOp 2021-09-01 14:14:15 +03: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.