Commit Graph

537 Commits

Author SHA1 Message Date
Jakob Unterwurzacher 5e9953ec27 toggledlog: wpanic: use Logger.Panic instead of naked panic
This makes sure the panic message also ends up in syslog
(if enabled).
2016-05-30 09:26:59 +02:00
Jakob Unterwurzacher 1648c54adb fusefrontend: use sync.Once for one-time warnings
Using a simple boolean was racy (which was harmless
in this case) and non-idomatic.
2016-05-29 22:50:03 +02:00
Jakob Unterwurzacher fd53dfd2ad fusefronted: check Fstat return value on file create
The Fstat call should never fail, but still, if it does return an error
it should be handled properly.
2016-05-29 22:43:48 +02:00
Jakob Unterwurzacher 77813bdc13 fusefrontend: simplify wlockMap
mapMutex can be anonymous and using an RWMutex is overkill
because the lock protects very short sections.
2016-05-29 22:40:05 +02:00
Jakob Unterwurzacher 9aeb639a15 fsstress-loopback: properly stop on Ctrl-C
Send fsstress (which ignores Ctrl-C) into the background
so the shell gets the signal. Manually kill fsstress in the
cleanup handler.

Also, use the build.bash script for gocryptfs.
2016-05-29 13:57:22 +02:00
Jakob Unterwurzacher 4c0cb37c50 fusefrontend: remove unused "forgotten" variable
The functionality has long been replaced by the fd < 0
check.
2016-05-29 13:46:47 +02:00
Jakob Unterwurzacher b5ae3dcc4e Update README for v0.10
Also add dates for all releases.
2016-05-25 00:28:22 +02:00
Jakob Unterwurzacher 30f0ae3720 fsstress-loopback: use random directory names
This allows to run more than one instance of
the script in parallel.

Also, properly clean up on exit.
2016-05-25 00:18:51 +02:00
Jakob Unterwurzacher 432c94da01 extractloop: use $SECONDS special variable
Gets rid of the call to "date" and simplifies the code.
2016-05-24 21:22:02 +02:00
Jakob Unterwurzacher b467e7509e stress_tests: add header comments
Also, convert extractloop.bash to using md5sum instead of diff -ur
so the user does not have to keep an extracted kernel tree around.
And print the iteration time.
2016-05-24 21:09:26 +02:00
Jakob Unterwurzacher 888e147cd8 stupidgcm: add benchmark.bash wrapper
Add a simple bash wrapper to make it easier to run the GCM
benchmarks.
2016-05-22 15:49:09 +02:00
Jakob Unterwurzacher e7f78135b3 Add "-allow_other" command-line option
As requested in https://github.com/rfjakob/gocryptfs/issues/26 ,
this adds the option to allow other users to access the filesystem.
2016-05-18 19:30:05 +02:00
Jakob Unterwurzacher 5d1d564512 Update README vor v0.10-rc3 2016-05-13 22:18:17 +02:00
David Gnedt a93bcabe9c Encrypt path in statfs() calls
Paths in statfs() calls were not encrypted resulting in
an Function not implemented error, when the unencrypted
path didn't exist in the underlying (encrypted)
filesystem.

$ df plain/existingdir
df: ‘plain/existingdir’: Function not implemented
2016-05-12 23:24:39 +02:00
Jakob Unterwurzacher 4ad9d4e444 prefer_openssl: add amd64 constraint
Optimized assembly versions for Go GCM are only available
on amd64.
2016-05-12 09:50:36 +02:00
Jakob Unterwurzacher 49b597f07c prefer_openssl: autodetect whether to use OpenSSL or Go GCM
Go GCM is faster than OpenSSL if the CPU has AES instructions
and you are running Go 1.6+.

The "-openssl" option now defaults to "auto".

"gocryptfs -debug -version" displays the result of the autodetection.

See https://github.com/rfjakob/gocryptfs/issues/23 for details and
benchmarks.
2016-05-12 00:42:42 +02:00
Jakob Unterwurzacher 384342fa5b README: Note fallocate changes for v0.10 (issue #22) 2016-05-11 10:18:43 +02:00
Jakob Unterwurzacher ba7c798418 fusefrontend: fix panic due to concurrently unregistered wlock
Commit 730291feab properly freed wlock when the file descriptor is
closed. However, concurrently running Write and Truncates may
still want to lock it. Check if the fd has been closed first.
2016-05-08 23:21:20 +02:00
Jakob Unterwurzacher 4b6cf43521 stress_tests: improve output 2016-05-08 22:23:59 +02:00
Jakob Unterwurzacher d56f1ee179 stress_tests: extractloop: run two loops in parallel
This increases the load but also the disk space requirements
(to about 2GB).
2016-05-05 14:17:05 +02:00
Jakob Unterwurzacher 730291feab fusefrontend: fix wlock memory leak
The write lock was not freed on release, causing a slow memory leak.

This was noticed by running extractloop.bash for 10 hours.
2016-05-05 13:38:39 +02:00
Jakob Unterwurzacher e97962bd3f stress_tests: add stress test scripts
These were hosted at https://github.com/rfjakob/fsstress . To
make them easier to use for gocryptfs users and developers, add
them to the main repo.
2016-05-05 12:58:44 +02:00
Jakob Unterwurzacher cf29ce3762 stupidgcm: set dummy locking callback.
In general, OpenSSL is only threadsafe if you provide a locking function
through CRYPTO_set_locking_callback. However, the GCM operations that
stupidgcm uses never call that function.

To guard against that ever changing, set a dummy locking callback
that crashes the app.
2016-05-05 00:09:08 +02:00
Jakob Unterwurzacher 906172938a stupidgcm: skip tests on Go 1.4 and older
Quoting from the patch:

	We compare against Go's built-in GCM implementation. Since stupidgcm only
	supports 128-bit IVs and Go only supports that from 1.5 onward, we cannot
	run these tests on older Go versions.
2016-05-05 00:09:08 +02:00
Jakob Unterwurzacher b4d45554f2 Revert "stupidgcm: print openssl error stack before panicing"
This did not help in debugging the openssl <= 1.0.1c issue at all
and makes the code more complex. Keep it simple.
2016-05-05 00:09:08 +02:00
Jakob Unterwurzacher 66156181ee cryptocore: support Go 1.4 in tests 2016-05-05 00:09:08 +02:00
Jakob Unterwurzacher 508a949d9d stupidgcm: reorder calls to support openssl <= 1.0.1c
This fixes the test failures on Travis CI.

Quoting from 07a4ff79d2

	/* Set expected tag value. A restriction in OpenSSL 1.0.1c and earlier
	 * required the tag before any AAD or ciphertext */
2016-05-05 00:08:25 +02:00
Jakob Unterwurzacher d0945b73d2 stupidgcm: print openssl error stack before panicing 2016-05-04 20:50:13 +02:00
Jakob Unterwurzacher 6c010c3080 stupidgcm: fix copy-paste error in panic message
Also, print the openssl version in Travis CI
2016-05-04 20:15:11 +02:00
Jakob Unterwurzacher 86eb37e41a Fix typos in README 2016-05-04 20:04:10 +02:00
Jakob Unterwurzacher 907bb58800 Update README for v0.10-rc1 2016-05-04 19:56:19 +02:00
Jakob Unterwurzacher 39f3a24484 stupidgcm: completely replace spacemonkeygo/openssl 2016-05-04 19:56:07 +02:00
Jakob Unterwurzacher c92190bf07 stupidgcm: add our own thin wrapper around openssl gcm
...complete with tests and benchmark.

This will allow us to get rid of the dependency to spacemonkeygo/openssl
that causes problems on Arch Linux
( https://github.com/rfjakob/gocryptfs/issues/21 )
2016-05-04 19:56:07 +02:00
Jakob Unterwurzacher 1bb907b38e cryptocore: add API tests 2016-05-04 19:56:07 +02:00
Jakob Unterwurzacher bb16f2d565 build.bash: replace "git -C"
"-C" is not supported on older git versions. Instead, just cd into
the directory.

See issue #20.
2016-04-28 08:41:39 +02:00
Jakob Unterwurzacher 4d79fba285 prelloc: warn and continue if fallocate(2) is not supported
This makes gocryptfs work at all on ZFS.
See https://github.com/rfjakob/gocryptfs/issues/22 .
2016-04-20 22:47:31 +02:00
Jakob Unterwurzacher f035d3efba Update manpage with "longnames" option, explain feature flag options 2016-04-17 21:19:51 +02:00
Jakob Unterwurzacher 36c1039228 build.bash: bake the go-fuse commit hash into the binaries 2016-04-10 23:16:09 +02:00
Jakob Unterwurzacher 776c734f43 Update readme.md and performance.txt for v0.9 2016-04-10 23:01:00 +02:00
Jakob Unterwurzacher bd5405189e Fix "go tool vet -shadow=true" warnings
Among those one real bug.
2016-04-10 21:31:15 +02:00
Jakob Unterwurzacher bd1f17ca9f tests: clean up leftover mounts in resetTmpDir
Failure in the example filesystems tests can leave them mounted.
2016-04-10 21:31:15 +02:00
Jakob Unterwurzacher db72fcea41 longnames: fix fsstress failure, use dirfd
Using dirfd-relative operations allows safe lockless handling
of the ".name" files.
2016-04-10 21:31:08 +02:00
Jakob Unterwurzacher 63d3e51734 longnames: use symbolic constants instead of naked ints 2016-04-10 12:36:43 +02:00
Jakob Unterwurzacher e42e46c97c Add v0.9-rc2 performance numbers 2016-04-10 12:04:50 +02:00
Jakob Unterwurzacher 0a49ecb869 Add v0.9 changes to README 2016-04-03 23:11:46 +02:00
Jakob Unterwurzacher 8c44b27869 travis ci: also build with Go 1.6 2016-04-03 22:51:44 +02:00
Jakob Unterwurzacher 37a9b4c3ee Enable openssl in tests to support old Go versions
Go 1.4 and older do not support 128-bit IVs which caused
the tests to panic.
2016-03-03 00:59:58 +01:00
Jakob Unterwurzacher b5221c9651 Fix Go 1.4 build failure caused by a refactoring oversight 2016-03-03 00:48:32 +01:00
Jakob Unterwurzacher 653d4a619c longnames part II: Rename, Unlink, Rmdir, Mknod, Mkdir + tests 2016-02-07 14:02:09 +01:00
Jakob Unterwurzacher 2a11906963 tests: do not create gocryptfs.diriv if plaintextnames==true 2016-02-07 13:28:55 +01:00