libgocryptfs/internal/fusefrontend
Jakob Unterwurzacher f316f1b2df fusefronted: disallow writes running concurrently with reads
As uncovered by xfstests generic/465, concurrent reads and writes
could lead to this,

  doRead 3015532: corrupt block #1039: stupidgcm: message authentication failed,

as the read could pick up a block that has not yet been completely written -
write() is not atomic!

Now writes take ContentLock exclusively, while reads take it shared,
meaning that multiple reads can run in parallel with each other, but
not with a write.

This also simplifies the file header locking.
2018-07-22 22:29:22 +02:00
..
args.go fusefrontend[_reverse]: move crypto init up to caller 2018-02-18 11:21:58 +01:00
ctlsock_interface.go fusefrontend: implement path decryption via ctlsock 2017-05-07 21:01:39 +02:00
file.go fusefronted: disallow writes running concurrently with reads 2018-07-22 22:29:22 +02:00
file_allocate_truncate.go fusefronted: disallow writes running concurrently with reads 2018-07-22 22:29:22 +02:00
file_holes.go fusefrontend: doWrite: delete file header if first write fails 2018-07-15 15:12:55 +02:00
fs.go macos: fix O_DIRECT build failure 2018-07-04 09:04:00 +02:00
fs_dir.go fsck: rename "CorruptItems" channel to "MitigatedCorruptions" 2018-07-01 20:56:22 +02:00
names.go fusefrontend: Introduce a openBackingPath helper and use it to simplify Mknod and Symlink 2017-11-28 09:28:06 +01:00
xattr.go fsck: rename "CorruptItems" channel to "MitigatedCorruptions" 2018-07-01 20:56:22 +02:00
xattr_darwin.go xattr: added passing of a "flags" parameter 2018-05-07 21:45:40 +02:00
xattr_linux.go xattr: added passing of a "flags" parameter 2018-05-07 21:45:40 +02:00
xattr_linux_unit_test.go Improved xattr handling on non-linux systems (#227) 2018-04-17 20:33:04 +02:00
xattr_unit_test.go Improved xattr handling on non-linux systems (#227) 2018-04-17 20:33:04 +02:00