Zach Brown 15a492fe57 scoutfs: always dirty parents when migrating
In a previous commit ("1bd094f scoutfs: migrate dirty btree blocks
during wrap") we fixed a bug where we wouldn't migrate blocks from the
old half of the ring because they were already dirty in memory.  The fix
accidentally introduced the case where we wouldn't dirty blocks when
migrating if they were already in the current half.

We always have to dirty parent blocks when migrating because we might
need to modify them to reference the new location of child blocks that
are migrated.  This bug meant that we'd modify clean blocks in memory
which would never make it to the persistent copy.  The system could
survive as long as it never read that block back from its persistent
location.  To see the corruption you'd either need tall btrees to be
shared between mounts or you'd need one mount to evict its clean
(actually modified) cached btree block under memory pressure and then
try to read it back.

Signed-off-by: Zach Brown <zab@versity.com>
2019-08-20 15:52:13 -07:00
Description
No description provided
6.2 MiB
Languages
C 86.4%
Shell 10%
Roff 2.5%
TeX 0.8%
Makefile 0.3%