diff options
author | Jakob Unterwurzacher | 2018-09-08 19:27:33 +0200 |
---|---|---|
committer | Jakob Unterwurzacher | 2018-09-08 19:27:33 +0200 |
commit | e8d8ae54d3b852d1d35b6db81d4a0beb57fbdce1 (patch) | |
tree | 15a537806a1d39fbb6778daf11017d2ba73b481a /tests | |
parent | 84d6fafeca8f1d7b1b631a56fc3dc47016c4ba31 (diff) |
fusefrontend: use OpenDirNofollow in openBackingDir
Rename openBackingPath to openBackingDir and use OpenDirNofollow
to be safe against symlink races. Note that openBackingDir is
not used in several important code paths like Create().
But it is used in Unlink, and the performance impact in the RM benchmark
to be acceptable:
Before
$ ./benchmark.bash
Testing gocryptfs at /tmp/benchmark.bash.bYO: gocryptfs v1.6-12-g930c37e-dirty; go-fuse v20170619-49-gb11e293; 2018-09-08 go1.10.3
WRITE: 262144000 bytes (262 MB, 250 MiB) copied, 1.07979 s, 243 MB/s
READ: 262144000 bytes (262 MB, 250 MiB) copied, 0.882413 s, 297 MB/s
UNTAR: 16.703
MD5: 7.606
LS: 1.349
RM: 3.237
After
$ ./benchmark.bash
Testing gocryptfs at /tmp/benchmark.bash.jK3: gocryptfs v1.6-13-g84d6faf-dirty; go-fuse v20170619-49-gb11e293; 2018-09-08 go1.10.3
WRITE: 262144000 bytes (262 MB, 250 MiB) copied, 1.06261 s, 247 MB/s
READ: 262144000 bytes (262 MB, 250 MiB) copied, 0.947228 s, 277 MB/s
UNTAR: 17.197
MD5: 7.540
LS: 1.364
RM: 3.410
Diffstat (limited to 'tests')
-rw-r--r-- | tests/reverse/correctness_test.go | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/tests/reverse/correctness_test.go b/tests/reverse/correctness_test.go index bb93316..62e3bbc 100644 --- a/tests/reverse/correctness_test.go +++ b/tests/reverse/correctness_test.go @@ -210,7 +210,7 @@ func TestTooLongSymlink(t *testing.T) { // Test that we can traverse a directory with 0100 permissions // (execute but no read). This used to be a problem as OpenDirNofollow opened -// all directory in the path with O_RDONLY. Now it uses O_PATH, which only needs +// all directories in the path with O_RDONLY. Now it uses O_PATH, which only needs // the executable bit. func Test0100Dir(t *testing.T) { // Note: t.Name() is not available before in Go 1.8 |