summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-04-19inomap: rework logic to efficiently support flagsJakob Unterwurzacher
Adding flags allows to use inomap in reverse mode, replacing the clunky inoBaseDirIV/inoBaseNameFile logic that causes problems with high underlying inode numbers ( https://github.com/rfjakob/gocryptfs/issues/457 ) Microbenchmarks (values below) show that the "SingleDev" case is now much slower due to an extra map lookup, but this has no visible effects in ./test.bash results, so there was no time spent optimizing the case further. $ go test -bench=. goos: linux goarch: amd64 pkg: github.com/rfjakob/gocryptfs/internal/inomap BenchmarkTranslateSingleDev-4 18757510 61.5 ns/op BenchmarkTranslateManyDevs-4 18061515 64.5 ns/op PASS ok github.com/rfjakob/gocryptfs/internal/inomap 2.467s
2020-04-19inomap: add benchmarkJakob Unterwurzacher
$ go test -bench=. goos: linux goarch: amd64 pkg: github.com/rfjakob/gocryptfs/internal/inomap BenchmarkTranslateSingleDev-4 202479382 5.88 ns/op BenchmarkTranslateManyDevs-4 16095795 71.9 ns/op PASS ok github.com/rfjakob/gocryptfs/internal/inomap 3.039s
2020-04-18build.bash: handle missing git tagsJakob Unterwurzacher
The case of a git repo without any tags used to fail with: fatal: No names found, cannot describe anything. Now we continue, using "[no_tags_found]" as the version string.
2020-04-18build.bash: don't enable -buildmode=pie for static buildsJakob Unterwurzacher
Causes warnings: $ ./build-without-openssl.bash # github.com/rfjakob/gocryptfs loadinternal: cannot find runtime/cgo # github.com/rfjakob/gocryptfs/gocryptfs-xray loadinternal: cannot find runtime/cgo # github.com/rfjakob/gocryptfs/contrib/statfs loadinternal: cannot find runtime/cgo gocryptfs v1.7.1-48-gf6b1c68 without_openssl; go-fuse v1.0.1-0.20190319092520-161a16484456; 2020-04-18 go1.13.6 linux/amd64 https://github.com/golang/go/issues/30986
2020-04-18nametransform: update comment & simplify testsJakob Unterwurzacher
The comment still mentioned CBC, which has been removed a long time ago. The test definition can be rewritten using slice literals, saving sume stuttering.
2020-04-13Prefer Go stdlib aes-gcm on arm64 with aes instructionsJakob Unterwurzacher
We used to prefer openssl in this situation, which used to make sense, but now Go gained an optimized assembly implementation for aes-gcm on arm64 with aes instructions: root@q1:~/go/src/github.com/rfjakob/gocryptfs# ./gocryptfs -speed gocryptfs v1.7.1-46-g73436d9; go-fuse v1.0.1-0.20190319092520-161a16484456; 2020-04-13 go1.14.2 linux/arm64 AES-GCM-256-OpenSSL 212.30 MB/s (selected in auto mode) AES-GCM-256-Go 452.30 MB/s AES-SIV-512-Go 100.25 MB/s XChaCha20-Poly1305-Go 137.35 MB/s https://github.com/rfjakob/gocryptfs/issues/452
2020-04-13travis: fix Go Modules build problemsJakob Unterwurzacher
2020-04-13build.bash: use GOFLAGS -trimpath and enable PIEJakob Unterwurzacher
GOFLAGS exists since Go 1.11: https://golang.org/doc/go1.11 https://github.com/rfjakob/gocryptfs/pull/460
2020-04-13Convert build and packaging scripts to Go ModulesJakob Unterwurzacher
2020-04-13dep: migrate to Go ModulesJakob Unterwurzacher
Following https://blog.golang.org/migrating-to-go-modules
2020-04-13shellcheck: make top-level bash scripts warning-freeJakob Unterwurzacher
And run shellcheck in test.bash.
2020-04-13build.bash: append branch name != masterJakob Unterwurzacher
2020-04-13speed: show gocryptfs versionJakob Unterwurzacher
Output now looks like this $ gocryptfs -speed gocryptfs v1.7.1-38-gbe3b9df-dirty; go-fuse v2.0.2-57-gd1cfa17; 2020-04-13 go1.13.6 linux/amd64 AES-GCM-256-OpenSSL 607.90 MB/s AES-GCM-256-Go 920.75 MB/s (selected in auto mode) AES-SIV-512-Go 169.85 MB/s XChaCha20-Poly1305-Go 794.30 MB/s and has go version and arch information, which is important when comparing results.
2020-04-13inomap: split into separate packageJakob Unterwurzacher
inomap will also be used by fusefrontend_reverse in the future. Split if off openfiletable to make it independent.
2020-04-13speed: add XChaCha20-Poly1305-GoJakob Unterwurzacher
https://github.com/rfjakob/gocryptfs/issues/452
2020-04-07Update manpage examplesOscar
2020-02-29crossbuild.bash: set GOARM=7Jakob Unterwurzacher
From https://github.com/golang/go/wiki/GoArm : In cross compilation situations, it is recommended that you always set an appropriate GOARM value along with GOARCH. The value seems to default to GOARM=5 if not set during cross-compilation.
2020-02-29speed: add code commentsJakob Unterwurzacher
2020-02-29tests: test xattr aclsJakob Unterwurzacher
Fixes https://github.com/rfjakob/gocryptfs/issues/453
2020-02-29fusefrontend: drop xattr user namespace restrictionJakob Unterwurzacher
We used to restrict setting xattrs to the "user." namespace. I don't see a real reason for this anymore, and it causes trouble for users who are using acls. Tests will be added in the next commit. https://github.com/rfjakob/gocryptfs/issues/453
2020-02-28Show undecryptable filenames if they match supplied globorcas
Resolves https://github.com/rfjakob/gocryptfs/issues/393
2020-02-15README: update changelogJakob Unterwurzacher
2020-02-15tests: randomize data in testWriteNJakob Unterwurzacher
Just writing zeros carries the risk of not detecting wrongly created file holes. Write random data instead.
2020-02-15performance.txt: update result for governor = performanceJakob Unterwurzacher
Also add big signs where the cpu has changed, as the results are not comparable when the cpu is different. Also update encfs results.
2020-02-15contentenc: encryptBlocksParallel: explain why last part runs in new goroutineJakob Unterwurzacher
The result is counter-intuitive, so explain it here.
2020-02-15main: respect GOMAXPROCS environment variableJakob Unterwurzacher
If the user sets GOMAXPROCS explicitely, we should respect it.
2020-02-15merge prefer_openssl package into stupidgcmJakob Unterwurzacher
Now that I have discovered golang.org/x/sys/cpu and that Go versions below 1.6 are uncommon, there was not much useful code left in prefer_openssl. Merge the remains into stupidgcm.
2020-02-15contentenc: move parallel encryption into encryptBlocksParallelJakob Unterwurzacher
Make the logic self-contained in the new helper function.
2020-02-15README: Raw64 change should be boldJakob Unterwurzacher
This was a new feature flag.
2020-02-15Add contrib/cleanup-tmp-mounts.shJakob Unterwurzacher
Useful when you have lots of broken mounts after something in the test suite went wrong.
2020-01-25tests: cli: add TestSymlinkedCipherdirJakob Unterwurzacher
https://github.com/rfjakob/gocryptfs/issues/450
2020-01-14main: haveFusermount2: respect PATH environment variableJakob Unterwurzacher
Use exec.LookPath() to find fusermount in the user's PATH first. Fall back to /bin/fusermount for the case that PATH is not set, like go-fuse does. Fixes https://github.com/rfjakob/gocryptfs/issues/448
2019-12-29Travis CI: upgrade from Ubuntu 16.04 "Xenial" to Ubuntu 18.04 "Bionic"Jakob Unterwurzacher
Newer kernel and (acc. to Travis documentation) faster boot times.
2019-12-29Travis CI: clean up Go versionsJakob Unterwurzacher
2019-12-28main: detect fusermount3 and don't add `nonempty`Jakob Unterwurzacher
fusermount3 (i.e. fusermount from libfuse 3.x) has dropped the `nonempty` option. Detect fusermount3 and don't add `nonempty` in this case. Fixes https://github.com/rfjakob/gocryptfs/pull/440
2019-12-28remove Trezor supportPavol Rusnak
2019-12-24Fix "go get" failureJakob Unterwurzacher
Move the statusTxtContent to fix this confusing error when running `go get github.com/rfjakob/gocryptfs/...`: $ go get github.com/rfjakob/gocryptfs/... # github.com/rfjakob/gocryptfs/tests/example_filesystems tests/example_filesystems/example_test_helpers.go:22:16: undefined: statusTxtContent tests/example_filesystems/example_test_helpers.go:75:16: undefined: statusTxtContent
2019-11-17MANPAGE: describe how to unmount, and that default options are fineJakob Unterwurzacher
Feedback received during the recent Go user group. If you haven't used FUSE before, you don't know how to unmount, and it was not described in the man page! As for the options, there are many, and new users are intimidated by it. State clearly that defaults are fine.
2019-11-16fs: add uint64 cast to fix Darwin buildJakob Unterwurzacher
Error from Travis CI was: +GOOS=darwin +GOARCH=amd64 +go build -tags without_openssl # github.com/rfjakob/gocryptfs/internal/fusefrontend internal/fusefrontend/fs.go:88:45: cannot use st.Dev (type int32) as type uint64 in argument to openfiletable.NewInumMap Add uint64 to fix it.
2019-11-16fusefrontend: use inummapJakob Unterwurzacher
translate inode numbers on different devices to fix collisions. Fixes https://github.com/rfjakob/gocryptfs/issues/435
2019-11-16openfiletable: add inummapJakob Unterwurzacher
Generates unique inode numbers for files on different devices. https://github.com/rfjakob/gocryptfs/issues/435
2019-11-16tests: also check inode number in VerifySizeJakob Unterwurzacher
Check Stat() vs Fstat() result. Not very useful at the moment as the kernel never seems to call Fstat().
2019-11-16contrib/statvsfstat: add statvsfstat toolJakob Unterwurzacher
Cli tool to compare the result of Stat() and Fstat().
2019-11-10tests: fsstress: clean up leftover mounts on startupJakob Unterwurzacher
Broken mounts may accumulate when the fs crashes.
2019-11-10tests: drop "-l" flag from fsstress-loopback.bashJakob Unterwurzacher
No longer supported by go-fuse loopback.
2019-11-03fusefrontend: warn about missing dirivJakob Unterwurzacher
The comment is outdated, at this point, we should really not get any errors from ReadDirIVAt. The change is best seen when running the fsck tests. Before: fsck: error opening dir "missing_diriv": 2=no such file or directory After: OpenDir "K2m0E6qzIfoLkVZJanoUiQ": could not read gocryptfs.diriv: no such file or directory fsck: error opening dir "missing_diriv": 5=input/output error See https://github.com/rfjakob/gocryptfs/issues/403 , where the extra info would have been helpful.
2019-11-03main: show "-fsck" in help textJakob Unterwurzacher
Suggested at https://github.com/rfjakob/gocryptfs/issues/403
2019-11-03fusefrontend: don't return EIO on directory with corrupt file namesJakob Unterwurzacher
This was meant as a way to inform the user that something is very wrong, however, users are hitting the condition on MacOS due to ".DS_Store" files, and also on NFS due to ".nfsXXX" files. Drop the whole thing as it seems to cause more pain than gain. Fixes https://github.com/rfjakob/gocryptfs/issues/431
2019-11-03tests: send SIGUSR1 to loopbackJakob Unterwurzacher
loopback needs to receive SIGUSR1 to write a memory profile.
2019-10-19tests: make extractloop work with go-fuse loopback againJakob Unterwurzacher
The "-l" flag is no longer supported in go-fuse loopback, drop it.