aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-01-10MANPAGE: add sub-headers to EXAMPLESJakob Unterwurzacher
Makes linking to them easier.
2021-01-10nametransform: move permission constants to perms.goJakob Unterwurzacher
Prep for https://github.com/rfjakob/gocryptfs/issues/539
2021-01-02-idle: don't lazy-unmountJakob Unterwurzacher
When a process has its working dir inside the mount, the only way we notice is that we get EBUSY when trying to unmount. We used to lazy-unmount in this case, but this means pulling the rug from under the process. For example, bash will start throwing cd: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory messages. Fixes https://github.com/rfjakob/gocryptfs/issues/533
2020-12-20main: add "-kernel_cache" flaggmd20
This option is similar to fuse(8) kernel_cache Verified using vmtouch. Without -kernel_cache: $ dd if=/dev/zero of=foo bs=1M count=10 ; vmtouch -t foo ; vmtouch foo 10+0 records in 10+0 records out 10485760 bytes (10 MB, 10 MiB) copied, 0,0242321 s, 433 MB/s Files: 1 Directories: 0 Touched Pages: 2560 (10M) Elapsed: 0.011159 seconds Files: 1 Directories: 0 Resident Pages: 0/2560 0/10M 0% Elapsed: 0.000993 seconds With -kernel_cache: $ dd if=/dev/zero of=foo bs=1M count=10 ; vmtouch -t foo ; vmtouch foo 10+0 records in 10+0 records out 10485760 bytes (10 MB, 10 MiB) copied, 0,0244015 s, 430 MB/s Files: 1 Directories: 0 Touched Pages: 2560 (10M) Elapsed: 0.011564 seconds Files: 1 Directories: 0 Resident Pages: 2560/2560 10M/10M 100% Elapsed: 0.000369 seconds
2020-11-14MANPAGE: add fstab exampleJakob Unterwurzacher
https://github.com/rfjakob/gocryptfs/issues/497
2020-11-14MANPAGE: add -info example outputJakob Unterwurzacher
2020-11-14MANPAGE: split up OPTIONS into action flags, init, mount, commonJakob Unterwurzacher
Fixes https://github.com/rfjakob/gocryptfs/issues/517
2020-11-14MANPAGE: clarify -fg and syslog interactionJakob Unterwurzacher
The flag -fg does NOT imply -nosyslog. Syslog redirection is active when -notifypid is passed.
2020-11-14Update Changelog for v2.0-beta2v2.0-beta2Jakob Unterwurzacher
2020-11-10fusefrontend_reverse: fix GETATTR panicJakob Unterwurzacher
We don't implement Getattr(), so don't try to call it. Reported at https://github.com/rfjakob/gocryptfs/issues/519#issuecomment-718790790 : 15:22:53.414101 rx 3344: READ n2565 {Fh 7 [42143744 +131072) L 0 RDONLY,0x8000} 15:22:53.414274 rx 3342: READ n2565 {Fh 7 [42012672 +131072) L 0 RDONLY,0x8000} 15:22:53.414787 rx 3346: READ n2565 {Fh 7 [42274816 +131072) L 0 RDONLY,0x8000} 15:22:53.414806 tx 3336: OK, 131072b data "\xcb\xd3<\"!-\xa7\xc4"... 15:22:53.414874 rx 3348: GETATTR n1446 {Fh 0} panic: interface conversion: *fusefrontend_reverse.File is not fs.FileGetattrer: missing method Getattr goroutine 451 [running]: github.com/rfjakob/gocryptfs/internal/fusefrontend_reverse.(*Node).Getattr(0xc00034c880, 0x5620579784c0, 0xc000593e60, 0x562057939800, 0xc000218050, 0xc0000fc108, 0x0) github.com/rfjakob/gocryptfs/internal/fusefrontend_reverse/node.go:69 +0x273 github.com/hanwen/go-fuse/v2/fs.(*rawBridge).getattr(0xc00011e000, 0x5620579784c0, 0xc000593e60, 0xc00034c880, 0x562057939800, 0xc000218050, 0xc0000fc108, 0xbfded1ef58ba7b13) github.com/hanwen/go-fuse/v2@v2.0.4-0.20200908172753-0b6cbc515082/fs/bridge.go:500 +0x2d4 github.com/hanwen/go-fuse/v2/fs.(*rawBridge).GetAttr(0xc00011e000, 0xc0000e0000, 0xc0000fc198, 0xc0000fc108, 0x0) github.com/hanwen/go-fuse/v2@v2.0.4-0.20200908172753-0b6cbc515082/fs/bridge.go:488 +0x11c github.com/hanwen/go-fuse/v2/fuse.doGetAttr(0xc000120000, 0xc0000fc000) github.com/hanwen/go-fuse/v2@v2.0.4-0.20200908172753-0b6cbc515082/fuse/opcode.go:287 +0x6f github.com/hanwen/go-fuse/v2/fuse.(*Server).handleRequest(0xc000120000, 0xc0000fc000, 0xc000000000) github.com/hanwen/go-fuse/v2@v2.0.4-0.20200908172753-0b6cbc515082/fuse/server.go:472 +0x2c1 github.com/hanwen/go-fuse/v2/fuse.(*Server).loop(0xc000120000, 0xc000288001) github.com/hanwen/go-fuse/v2@v2.0.4-0.20200908172753-0b6cbc515082/fuse/server.go:445 +0x18c created by github.com/hanwen/go-fuse/v2/fuse.(*Server).readRequest github.com/hanwen/go-fuse/v2@v2.0.4-0.20200908172753-0b6cbc515082/fuse/server.go:312 +0x419
2020-11-10performance.txt: add v2.0-beta1-9 resultsJakob Unterwurzacher
2020-11-10go.mod: switch back to mainline go-fuseJakob Unterwurzacher
https://review.gerrithub.io/c/hanwen/go-fuse/+/503508 was merged as https://github.com/hanwen/go-fuse/commit/1d0096e57910b8277fd8862b5f0932c04d41857b so we don't need our fork anymore.
2020-10-22README: add link to gocryptfs-inspectJakob Unterwurzacher
This is *very* hard to find. https://github.com/rfjakob/gocryptfs/issues/152
2020-10-19Drop two more generated filesJakob Unterwurzacher
These were committed by mistake.
2020-10-19Drop generated filesJakob Unterwurzacher
These were committed by mistake.
2020-10-18fusefronted: reject GETXATTR "security.capability"Jakob Unterwurzacher
Unless we are mounted with -suid, we can reject these requests, and gain back some lost speed. Closes https://github.com/rfjakob/gocryptfs/issues/515
2020-10-18syscallcompat: add getxattr fastpathsJakob Unterwurzacher
The allocations from Lgetxattr were #1 in the tar extract allocation profile (caused by security.capability lookups). No more! $ benchstat old.txt new.txt name old time/op new time/op delta Lgetxattr-4 15.2µs ± 0% 1.8µs ± 0% ~ (p=1.000 n=1+1) $ ./benchmark.bash Testing gocryptfs at /tmp/benchmark.bash.H8p: gocryptfs v2.0-beta1-4-g95ea738-dirty; go-fuse v2.0.4-0.20200908172753-0b6cbc515082 => github.com/rfjakob/go-fuse/v2 v2.0.4-0.20201015204057-88b12c99f8af; 2020-10-18 go1.15.3 linux/amd64 /tmp/benchmark.bash.H8p.mnt is a mountpoint WRITE: 262144000 bytes (262 MB, 250 MiB) copied, 0,520109 s, 504 MB/s READ: 262144000 bytes (262 MB, 250 MiB) copied, 0,255672 s, 1,0 GB/s UNTAR: 30,238 MD5: 12,721 LS: 10,038 RM: 16,536
2020-10-17fsck: make sure we unmount in all casesJakob Unterwurzacher
2020-10-16syscallcompat: add Lgetxattr benchmarkJakob Unterwurzacher
2020-10-16performance.txt: add gocryptfs v1.8.0 resultsJakob Unterwurzacher
2020-10-16Update performance.txt with gocryptfs v2.0-beta1 resultJakob Unterwurzacher
As expected, we are slow. Fd caching will be implemented later.
2020-10-15Update README for v2.0-beta1v2.0-beta1Jakob Unterwurzacher
2020-10-15v2pai: delete fusefrontend_reverse_v1apiJakob Unterwurzacher
Served its mission a copy-paste source but can now be deleted.
2020-10-15go.mod: temporarily switch to patched go-fuse forkJakob Unterwurzacher
Use our fork until https://review.gerrithub.io/c/hanwen/go-fuse/+/503508 gets merged. Command used was: go mod edit -replace github.com/hanwen/go-fuse/v2=github.com/rfjakob/go-fuse/v2@knodes_upstreaming_v3
2020-10-15contrib: cleanup-tmp-mounts: also clean ext4-ramdiskJakob Unterwurzacher
2020-10-14main: show microseconds in go-fuse logsJakob Unterwurzacher
Suppress the date but show microseconds in fuse debug logs (-fusedebug) and go-fuse warnings.
2020-10-14syscallcompat: don't retry Close()Jakob Unterwurzacher
After Close() returns, the fd is dead, even if we received EINTR. Don't retry, we could shoot down an unrelated fd that received the same fd number.
2020-10-14syscallcompat: retry ops on EINTRJakob Unterwurzacher
Retry operations that have been shown to throw EINTR errors on CIFS. Todo: Solution for this pain in the back: warning: unix.Getdents returned errno 2 in the middle of data rm: cannot remove 'linux-3.0.old3/Documentation/ABI/removed': Input/output error Progress towards fixing https://github.com/rfjakob/gocryptfs/issues/483 .
2020-10-11syscallcompat: Openat: retry on EINTRJakob Unterwurzacher
Towards fixing https://github.com/rfjakob/gocryptfs/issues/507
2020-10-04build.bash: show "go mod edit -replace" in version stringJakob Unterwurzacher
If you do something like this, go mod edit -replace github.com/hanwen/go-fuse/v2=/home/jakob/go/src/github.com/hanwen/go-fuse the version string of the resulting binary should reflect that. Before: gocryptfs v1.8.0-135-g352b547-dirty.gofuse_v2api; go-fuse v2.0.4-0.20200908172753-0b6cbc515082; 2020-10-03 go1.15.2 linux/amd64 After: gocryptfs v1.8.0-135-g352b547-dirty.gofuse_v2api; go-fuse v2.0.4-0.20200908172753-0b6cbc515082 => /home/jakob/go/src/github.com/hanwen/go-fuse; 2020-10-03 go1.15.2 linux/amd64
2020-10-04tests: fsstress-gocryptfs.bash: log timestamp for each iterationJakob Unterwurzacher
2020-10-04tests: fsstress-gocryptfs.bash: add DEBUG optionJakob Unterwurzacher
Also add a wrapper script, fsstress.collect-crashes.sh, to collect the debug output. https://github.com/hanwen/go-fuse/issues/372
2020-10-03fsstress-gocryptfs.bash: don't hang if TMPDIR ends in /Jakob Unterwurzacher
We would hang like this ./fsstress-loopback.bash Recompile go-fuse loopback: v2.0.3-7-g0b6cbc5 Waiting for mount: xxxxxxxx^C if TMPDIR has a trailing /. The reason is that the paths in /proc/self/mounts are normalized, while TMPDIR may not be.
2020-09-21go mod tidyPavol Rusnak
2020-09-18fsstress-gocryptfs.bash: print loopback version & mount pathJakob Unterwurzacher
To make the used go-fuse version clear in logs, print it on startup, similar to what we do with gocryptfs.
2020-09-18contrib/mount-ext4-ramdisk.sh: clean up in error caseJakob Unterwurzacher
Also fix all shellcheck warnings.
2020-09-14Add contrib/mount-ext4-ramdisk.shJakob Unterwurzacher
2020-09-13stress_tests/fsstress-gocryptfs.bash: use rm -Rf for cleanupJakob Unterwurzacher
Apparently, kernel 5.8 now allows unprivileged "mknod /tmp/x c 0 0": vfs: allow unprivileged whiteout creation https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.8.9&id=a3c751a50fe6bbe50eb7622a14b18b361804ee0c which is why rm throws a new prompt: rm: remove write-protected character special file '...'? Use rm -Rf to suppress that.
2020-09-12go.mod: update go-fuseJakob Unterwurzacher
2020-09-12Add support for FIDO2 tokensPavol Rusnak
2020-09-12tests/plaintextnames: add TestInoReuseEvilJakob Unterwurzacher
2020-09-09tests: add TestInoReuseJakob Unterwurzacher
2020-09-09test_helpers: print warning when not running on ext4Jakob Unterwurzacher
ext4 reuses inode numbers, tmpfs does not.
2020-09-09v2api: add Darwin xattr supportJakob Unterwurzacher
2020-09-09syscallcompat: add Renameat2 for DarwinJakob Unterwurzacher
2020-09-09test_helpers: mark MountOrFatal as a Helper()Jakob Unterwurzacher
2020-09-06manpage: link to exitcodes.goJakob Unterwurzacher
2020-09-06gocryptfs -init: fix wrong exit code on non-empty dirJakob Unterwurzacher
Fixes https://github.com/rfjakob/gocryptfs/pull/503
2020-08-30v2api/reverse: update TODO comment on xattrsJakob Unterwurzacher
2020-08-30tests/reverse: implement (skipped) xattr testJakob Unterwurzacher
v1api reverse mode did not have xattr support, the v2api version may have at some point. Prep the test already.