Skip to content
  • Jaegeuk Kim's avatar
    f2fs: check the blocksize before calling generic_direct_IO path · 944fcfc1
    Jaegeuk Kim authored
    The f2fs supports 4KB block size. If user requests dwrite with under 4KB data,
    it allocates a new 4KB data block.
    However, f2fs doesn't add zero data into the untouched data area inside the
    newly allocated data block.
    
    This incurs an error during the xfstest #263
    
     test as follow.
    
    263 12s ... [failed, exit status 1] - output mismatch (see 263.out.bad)
    	--- 263.out	2013-03-09 03:37:15.043967603 +0900
    	+++ 263.out.bad	2013-12-27 04:20:39.230203114 +0900
    	@@ -1,3 +1,976 @@
    	QA output created by 263
    	fsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z
    	-fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z
    	+fsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z
    	+truncating to largest ever: 0x12a00
    	+truncating to largest ever: 0x75400
    	+fallocating to largest ever: 0x79cbf
    	...
    	(Run 'diff -u 263.out 263.out.bad' to see the entire diff)
    	Ran: 263
    	Failures: 263
    	Failed 1 of 1 tests
    
    It turns out that, when the test tries to write 2KB data with dio, the new dio
    path allocates 4KB data block without filling zero data inside the remained 2KB
    area. Finally, the output file contains a garbage data for that region.
    
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
    944fcfc1