Hi, I am Jayashree Mohan, a PhD student at the University of Texas at Austin, working with Prof. Vijay Chidambaram. I've been working on the Crashmonkey project, which is a test harness for file system crash consistency checks[1].
Using CrashMonkey, we stumbled upon the following possible issue with f2fs: Whenever we do a fallocate zero_range operation with the keep_size flag, followed by a fdatasync and then crash(power off), on recovery we see an incorrect file size. This issue aligns with the patch here[2], except that generic/392 and generic/468 have tested fallocate_punch_hole and fallocate operations, but not zero_range. > On Wed, Nov 15, 2017 at 04:58:33PM +0800, Chao Yu wrote: >> f2fs can skip isize updating in fsync(), since during mount, f2fs tries >> to recovery isize according to valid block address or preallocated flag >> in last fsynced dnode block. >> >> However, fallocate() breaks our rule with setting FALLOC_FL_KEEP_SIZE >> flag, since it can preallocated block cross EOF, once the file is fsynced, >> in POR, we will recover isize incorrectly based on these fallocated >> blocks. A simple workload to reproduce this would be : 1. create foo 2. Write (8K - 16K) // foo size = 16K now 3. fsync() 4. falloc zero_range , keep_size (4202496 - 4210688) // foo size must be 16K 5. fdatasync() Crash now On recovery, we see that the file size is 4210688 and not 16K, which violates the semantics of keep_size flag. We have a test case to reproduce this using CrashMonkey on 4.15 kernel. Try this out by simply running : ./c_harness -f /dev/sda -d /dev/cow_ram0 -t f2fs -e 102400 -P -v tests/generic_468_zero.so Do you think, this is a possible corner case that skipped your attention? Let me know if I am missing some detail. [1] https://github.com/utsaslab/crashmonkey [2] https://sourceforge.net/p/linux-f2fs/mailman/message/36104201/ Thanks, Jayashree Mohan PhD in Computer Science University of Texas at Austin. ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel