libgocryptfs/internal/fusefrontend
Jakob Unterwurzacher 024511d9c7 fusefrontend: coalesce 4kB writes
This improves performance on hdds running ext4, and improves
streaming write performance on hdds running btrfs. Tar extract
slows down on btrfs for some reason.

See https://github.com/rfjakob/gocryptfs/issues/63

Benchmarks:

encfs v1.9.1
============

$ ./benchmark.bash -encfs /mnt/hdd-ext4
Testing EncFS at /mnt/hdd-ext4/benchmark.bash.u0g
WRITE: 131072000 bytes (131 MB, 125 MiB) copied, 1,48354 s, 88,4 MB/s
UNTAR: 20.79
LS:    3.04
RM:    6.62

$ ./benchmark.bash -encfs /mnt/hdd-btrfs
Testing EncFS at /mnt/hdd-btrfs/benchmark.bash.h40
WRITE: 131072000 bytes (131 MB, 125 MiB) copied, 1,52552 s, 85,9 MB/s
UNTAR: 24.51
LS:    2.73
RM:    5.32

gocryptfs v1.1.1-26-g4a7f8ef
============================

$ ./benchmark.bash /mnt/hdd-ext4
Testing gocryptfs at /mnt/hdd-ext4/benchmark.bash.1KG
WRITE: 131072000 bytes (131 MB, 125 MiB) copied, 1,55782 s, 84,1 MB/s
UNTAR: 22.23
LS:    1.47
RM:    4.17

$ ./benchmark.bash /mnt/hdd-btrfs
Testing gocryptfs at /mnt/hdd-btrfs/benchmark.bash.2t8
WRITE: 131072000 bytes (131 MB, 125 MiB) copied, 6,87206 s, 19,1 MB/s
UNTAR: 69.87
LS:    1.52
RM:    5.33

gocryptfs v1.1.1-32
===================

$ ./benchmark.bash /mnt/hdd-ext4
Testing gocryptfs at /mnt/hdd-ext4/benchmark.bash.Qt3
WRITE: 131072000 bytes (131 MB, 125 MiB) copied, 1,22577 s, 107 MB/s
UNTAR: 23.46
LS:    1.46
RM:    4.67

$ ./benchmark.bash /mnt/hdd-btrfs/
Testing gocryptfs at /mnt/hdd-btrfs//benchmark.bash.XVk
WRITE: 131072000 bytes (131 MB, 125 MiB) copied, 3,68735 s, 35,5 MB/s
UNTAR: 116.87
LS:    1.84
RM:    6.34
2016-11-25 09:03:32 +01:00
..
args.go Add support for unpadded base64 filenames, "-raw64" 2016-11-01 18:43:22 +01:00
ctlsock_interface.go ctlsock: implement EncryptPath for reverse mode, add tests 2016-11-10 23:32:51 +01:00
file.go fusefrontend: coalesce 4kB writes 2016-11-25 09:03:32 +01:00
file_allocate_truncate.go fusefrontend: get the file ID from the open files table 2016-11-17 22:29:45 +01:00
file_holes.go fusefrontend: move hole padding check out of Write() 2016-10-25 22:37:45 +02:00
fs.go Add support for unpadded base64 filenames, "-raw64" 2016-11-01 18:43:22 +01:00
fs_dir.go fusefrontend: log missing gocryptfs.diriv 2016-10-16 15:04:59 +02:00
names.go nametransform: delete unused function DecryptPathDirIV 2016-09-25 18:56:23 +02:00
write_lock.go Fix golint warnings, add helper script 2016-11-17 23:40:03 +01:00