diff options
author | Jakob Unterwurzacher | 2018-07-22 22:29:22 +0200 |
---|---|---|
committer | Jakob Unterwurzacher | 2018-07-22 22:29:22 +0200 |
commit | f316f1b2df47dca651174e574ab072f6b46c0b01 (patch) | |
tree | 16176cb053718ba6b2815d08df44040f75d3fdae /internal/fusefrontend/ctlsock_interface.go | |
parent | c70df522d2a78f3152fa61511bed9fafa7c495a3 (diff) |
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.
Diffstat (limited to 'internal/fusefrontend/ctlsock_interface.go')
0 files changed, 0 insertions, 0 deletions