Hi, [Fsync issue in btrfs] In addition to the above, I would like to bring to your notice that : After doing a fallocate or fallocate zero_range with keep size option, a fsync() operation would have no effect at all. If we crash after the fsync, on recovery the blocks allocated due to the fallocate call are lost. This aligns with a patch work here[1] for a similar issue with punch_hole. A simple test scenario that reproduces this bug is :
1. write (0-16K) to a file foo 2. sync() 3. fallocate keep_size (16K - 20K) 4. fsync(foo) 5. Crash On recovery, all blocks allocated in step 3 are lost (this is the true even when fallocate is replaced by zero_range operation supported in kernel 4.16 ) Could you explain why a fsync() of the file would still not persist the metadata(block count in this case), across power failures? [1] https://patchwork.kernel.org/patch/5830801/ Thanks, Jayashree Mohan On Wed, Feb 21, 2018 at 8:23 PM, Jayashree Mohan <jayashree2...@gmail.com> wrote: > 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