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