diff options
| author | max | 2026-08-17 01:15:41 +0000 |
|---|---|---|
| committer | Jakob Unterwurzacher | 2026-08-30 22:49:34 +0200 |
| commit | 9c2130d6c2e54c45c6787fbc49a896a8544a5e47 (patch) | |
| tree | 8a228b71212c0de93cc9ea60e9e53b5379569faa /tests/stress_tests/extractloop.md5sums | |
| parent | 790362e8f8eabd1bdf75f98328daf94cf623c600 (diff) | |
node.Setattr opens its own file handle and called truncate directly,
without ContentLock. truncate ends in doWrite, which documents that the
caller holds that lock, and file.Setattr and Allocate both take it.
Besides leaving a path truncate unserialized against concurrent writes,
this skipped the write-operation counter that ContentLock.Lock()
increments. isConsecutiveWrite() reads that counter to notice foreign
modifications, so an already-open handle kept assuming its next write
appends, skipped writePadHole() and grew the file past a short last
block. That block no longer decrypted, and every later operation on the
file failed with EIO.
Fixes #1024
Diffstat (limited to 'tests/stress_tests/extractloop.md5sums')
0 files changed, 0 insertions, 0 deletions
