Hi,

On btrfs (as of kernel 4.15), say we fallocate a file with keep_size
option, followed by fdatasync() or fsync(). If we now crash, on
recovery we see a wrong block count and all the blocks allocated
beyond the eof are lost. This bug was reported(xfstest generic/468)
and patched on ext4[1], and a variant of this, that did not recover
the correct file size was patched in f2fs[2]. I am wondering why this
is still not fixed in btrfs. You can reproduce this bug on btrfs using
a tool called CrashMonkey that we are building at UT Austin, which is
a test harness for filesystem crash consistency checks[3]

To reproduce the bug, simply run :
 ./c_harness -f /dev/sda -d /dev/cow_ram0 -t btrfs -e 102400  -v
tests/generic_468.so

Is there a reason why this is not yet patched in btrfs? I don't see
why even after a fsync(), losing the blocks allocated beyond the eof
are acceptable.

[1] https://patchwork.kernel.org/patch/10120293/
[2] https://sourceforge.net/p/linux-f2fs/mailman/message/36104201/
[3] https://github.com/utsaslab/crashmonkey

Thanks,

Jayashree Mohan
2nd Year PhD in Computer Science
University of Texas at Austin.
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to