37d63df227
There are certain Kernel versions which do not send individual Forget operations after they receive "not implemented" for Batch Forget. One example is "5.4.0-110-generic" on Ubuntu 20.04. I am sure there are plenty of others. This leads to inode "leaks". Where reference counts are never decreased and the inodes were left hanging around long after they are not needed any more. The best way to fix that was adding support for batch operations to the lib. This way all users will be able to benefit from the batching optimization. Co-authored-by: Doychin Atanasov <doychin.atanasov@chaosgroup.com> |
||
---|---|---|
.github/workflows | ||
fsutil | ||
fuseops | ||
fusetesting | ||
fuseutil | ||
internal | ||
samples | ||
.gitignore | ||
LICENSE | ||
README.md | ||
connection.go | ||
conversions.go | ||
debug.go | ||
doc.go | ||
errors.go | ||
freelists.go | ||
go.mod | ||
go.sum | ||
mount.go | ||
mount_config.go | ||
mount_darwin.go | ||
mount_linux.go | ||
mount_test.go | ||
mounted_file_system.go | ||
ops.go | ||
unmount.go | ||
unmount_linux.go | ||
unmount_std.go | ||
writev.go |
README.md
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 viafuse.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.