- 28 Aug, 2024 3 commits
-
-
Han-Wen Nienhuys authored
Change-Id: I91a375cc2956b2ead0ad3a4a5b2a0c66a4c327e2
-
Han-Wen Nienhuys authored
If a returned file implements the FilePassthroughFder interface, we try to register the file in the kernel. Implement this for loopbackFile, and test the behavior. For benchmarking, use a single reader. With multiple readers, contents are served out of kernel cache, and do not reflect FUSE performance. Benchmark (CPU i5-8350U pinned at 2Ghz): $ go build -v && go test -run "abc" -bench '(Libfuse|FD)' --passthrough_hp ~/vc/libfuse/build/example/passthrough_hp -test.cpu=1 BenchmarkGoFuseFDRead 27444 45997 ns/op 1424.80 MB/s 87 B/op 1 allocs/op BenchmarkLibfuseHP 35377 32198 ns/op 2035.43 MB/s 0 B/op 0 allocs/op $ go build -v && sudo go test -run "abc" -bench '(Libfuse|FD)' --passthrough_hp ~/vc/libfuse/build/example/passthrough_hp -test.cpu=1 BenchmarkGoFuseFDRead 91788 11902 ns/op 5506.23 MB/s 3 B/op 0 allocs/op BenchmarkLibfuseHP 100556 11831 ns/op 5539.38 MB/s 0 B/op 0 allocs/op Change-Id: If8bde502a3450028f4d87ba61fa9c76ea3ea6c63
-
Han-Wen Nienhuys authored
This prepares for extension to the passthrough support, in particular, the ops_mask to be added to `struct fuse_backing_map`. Change-Id: If4d7c321a5d09e9b2a3b804bd5e434aab394fe30
-
- 27 Aug, 2024 2 commits
-
-
Han-Wen Nienhuys authored
Even trivial changes need testing (sigh). Change-Id: I1d009e97b51037544fc90392999587d2472ff13a
-
Han-Wen Nienhuys authored
This is technically a backward incompatible change, but this feature is currently not supported. Change-Id: Ifcea9a337a06277f70a23eeee66db8d4b661b046
-
- 25 Aug, 2024 10 commits
-
-
Han-Wen Nienhuys authored
Change-Id: I513d6344ff0d22649c240bbf31ef901dca70f4e2
-
Han-Wen Nienhuys authored
Also create a fresh fileEntry even if we reuse the file handle number. Change-Id: Ic3f37f8ad6d916f84b0dbcb8268f195161aac4ad
-
Han-Wen Nienhuys authored
passthrough_hp is the high-performance loopback filesystem. By exercising it, we can distinguish between kernel bugs (shared between go-fuse and libfuse) and go-fuse bugs. Passthrough mode does not work with iflag=direct, because passthrough_hp does not check if the file is marked "directio", assuming read() calls in passthrough mode are some kind of error. Change-Id: I2b6b4c943031e1a2864e15e5bf396aac28c63e31
-
Han-Wen Nienhuys authored
Change-Id: I0dd07cf43fded2aa28ff83b2797e9222ae6e1295
-
Han-Wen Nienhuys authored
Loopback (file backed by some other file on disk) is an important use-case, and FUSE features such as passthrough and splicing aim to reduce overhead. Example: Splice disabled: $ go test -bench FD -test.cpu=1,2 goos: linux goarch: amd64 pkg: github.com/hanwen/go-fuse/v2/benchmark cpu: Intel(R) Core(TM) i5-8350U CPU @ 1.70GHz BenchmarkGoFuseFDRead 1929 597942 ns/op 3507.28 MB/s 4290 B/op 129 allocs/op BenchmarkGoFuseFDRead-2 2497 421856 ns/op 4971.26 MB/s 62500 B/op 177 allocs/op PASS ok github.com/hanwen/go-fuse/v2/benchmark 3.510s Splice enabled: $ go test -bench FD -test.cpu=1,2 goos: linux goarch: amd64 pkg: github.com/hanwen/go-fuse/v2/benchmark cpu: Intel(R) Core(TM) i5-8350U CPU @ 1.70GHz BenchmarkGoFuseFDRead 1524 750249 ns/op 2795.28 MB/s 4132 B/op 98 allocs/op BenchmarkGoFuseFDRead-2 2364 463522 ns/op 4524.39 MB/s 11719 B/op 106 allocs/op PASS in other words, the API complexity that splicing introduced was not worth it: it actually slows down things. Change-Id: I4f7519ab2cc5b0145d0f7f81f55ad20d544e9d87
-
Han-Wen Nienhuys authored
Change-Id: I683c0f614f67e787229d0754354a25f225184995
-
Han-Wen Nienhuys authored
Change-Id: Iad80862a8d13cb03511a005d385735594ff5e353
-
Han-Wen Nienhuys authored
The passthrough feature lets a filesystem register an open file descriptor with the kernel to avoid roundtrips for read/write operations. Change-Id: Ia8bde502a3450028f4d87ba61fa9c76ea3ea6c63
-
Han-Wen Nienhuys authored
Change-Id: I18bde502a3450028f4d87ba61fa9c76ea3ea6c63
-
Han-Wen Nienhuys authored
Document why some bits are platform dependent. Change-Id: Ib8bde502a3450028f4d87ba61fa9c76ea3ea6c63
-
- 23 Aug, 2024 3 commits
-
-
Han-Wen Nienhuys authored
Add definitions and print routines for FUSE_NO_EXPORT_SUPPORT, FUSE_NOTIFY_RESEND and FOPEN_PASSTHROUGH and associated fields. Change-Id: I5bd52c44a91484ac78ea5413cbd4bf5dc927501e
-
Han-Wen Nienhuys authored
Change-Id: I331f9f702fa0a850df2d6f1e3dd75f9f550750ed
-
Han-Wen Nienhuys authored
Multiple reader code was introduced in 03081e9d (May 2012). Redo the benchmark to verify that this still makes sense. Change-Id: I03432b93285d3e3e9494858c844be1ff2dbd3147
-
- 16 Aug, 2024 1 commit
-
-
Zoey Greer authored
This enables using go-fuse in a init binary that is spawned directly from the kernel. See also https://github.com/hanwen/go-fuse/pull/525. Change-Id: Ibbaa04af993677536bd4ae8a173a5a6d93118940
-
- 15 Aug, 2024 3 commits
-
-
Han-Wen Nienhuys authored
mips64 uses 0x4000 for LARGEFILE. See also issue #514 Change-Id: I46e83824f412131961318b16767bc05273fa2fbe
-
Han-Wen Nienhuys authored
Add `isTest` to avoid panicking outside of test scenarios, in case we mess up the flag definitions. The latter can easily happen, due to subtle differences between architectures. Change-Id: I4085de49e39eddf328269a7a3e694818c693e195
-
Han-Wen Nienhuys authored
This will allow duplicate keys in the initialization. Change-Id: I16969bddd1aad0232477379229a0afbe8faf1933
-
- 28 May, 2024 2 commits
-
-
Jakob Unterwurzacher authored
gvfsd-trash sets an inotify watch on mntDir and stat()s every file that is created, racing with the test logic. Create our files in a subdir to avoid that, as gvfsd-trash does not monitor subdirs. Fixes: https://github.com/hanwen/go-fuse/issues/478 Change-Id: I8e297a16af7fdd8b8c9574d456bbf43d36eddd67
-
Jakob Unterwurzacher authored
It is sometimes helpful to know which process accesses the filesystem. Relates-to: https://github.com/hanwen/go-fuse/issues/478 Change-Id: Ie435d093f03a32c02f02b45df880a207c5d7cad1
-
- 18 May, 2024 2 commits
-
-
Han-Wen Nienhuys authored
Change-Id: I8f05010f64edaf1d41fdfca31ee4ae3079cd0ae3
-
Han-Wen Nienhuys authored
As of commit 4f621f9a, we don't support older versions Change-Id: I9f05010f64edaf1d41fdfca31ee4ae3079cd0ae3
-
- 15 May, 2024 4 commits
-
-
Han-Wen Nienhuys authored
Change-Id: Ib094e7e55f922780408223626d88388d2cc5f8b6
-
Han-Wen Nienhuys authored
Use UtimesNanoAt with AT_SYMLINK_NOFOLLOW. Add PosixTest/SetattrSymlink to test this. Change-Id: Ia3a00ad75afd1ba255965025f63fd047662885ec
-
lch authored
posix_fallocate(2) returns error directly without setting errno[1] [1]: https://man.freebsd.org/cgi/man.cgi?query=posix_fallocate&sektion=2 Change-Id: I90ac60ecab6f8814a579cc96d11d4d6660408e88
-
lch authored
This test case is going to test whether the file lock works well on the system. It firstly adds a lock and then get the lock through syscalls. It uses F_OFD_GETLK command of fcntl(2) to get the lock info on an opened file description[1], which is not defined on the FreeBSD. This commit seperate the process of getting the information of lock for different OSes, and mimic the behaviour of F_OFD_GETLK on FreeBSD. [1]: https://www.gnu.org/software/libc/manual/html_node/Open-File-Description-Locks.html Change-Id: I8abae0e7040fc667143eea028731e341be9b1baf
-
- 12 May, 2024 1 commit
-
-
Jakob Unterwurzacher authored
Fails to compile. Example: https://github.com/hanwen/go-fuse/actions/runs/8909081785/job/24465823082 Run GOMAXPROCS="1" ./all.bash + go build ./... go: downloading golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a Error: fs/api.go:237:2: //go:build comment without // +build comment Error: fs/api.go:237:2: //go:build comment without // +build comment Error: Process completed with exit code 1. Change-Id: I2e396906d9cf9fa2248b04f3963b1b2d32b6fd57
-
- 01 May, 2024 2 commits
-
-
Jakob Unterwurzacher authored
Calling Serve() multiple times leads to a panic on unmount and fun debugging sessions ( https://github.com/hanwen/go-fuse/issues/512 ). Catch it early. Change-Id: I3c490448fa3b8407a6db1bd8ad94b8a4e1a93828
-
Jakob Unterwurzacher authored
Per default, only 1000 FUSE mounts are allowed, then you get > /usr/bin/fusermount3: too many FUSE filesystems mounted; mount_max=N can be set in /etc/fuse.conf Let's stay well below 1000 as there may be other (unrelated) FUSE mounts also occupying slots. Change-Id: I2e2e094a88236ff803abba3722395c29207c8571
-
- 30 Apr, 2024 1 commit
-
-
lch authored
Change-Id: Iffa5314fbe171d182a4bdef42e0ab4781cc1d221
-
- 21 Apr, 2024 1 commit
-
-
lch authored
Prefer x/sys/unix over syscall package, which supports FreeBSD. Change-Id: Ifd3a0fd6d2b90369a6e1e74d92606a655815a6a4
-
- 20 Apr, 2024 2 commits
- 14 Apr, 2024 2 commits
- 12 Apr, 2024 1 commit
-
-
lch authored
Change-Id: I8ff8e8dc9431b5af52e3ca8e78f0da73cead9008
-