On Mon, Mar 08, 2021 at 05:20:17PM +0800, Qu Wenruo wrote:
> [BUG]
> Btrfs fails at generic/091 test case, with the following output:
> 
>   fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -W
>   mapped writes DISABLED
>   Seed set to 1
>   main: filesystem does not support fallocate mode FALLOC_FL_COLLAPSE_RANGE, 
> disabling!
>   main: filesystem does not support fallocate mode FALLOC_FL_INSERT_RANGE, 
> disabling!
>   skipping zero size read
>   truncating to largest ever: 0xe400
>   copying to largest ever: 0x1f400
>   cloning to largest ever: 0x70000
>   cloning to largest ever: 0x77000
>   fallocating to largest ever: 0x7a120
>   Mapped Read: non-zero data past EOF (0x3a7ff) page offset 0x800 is 0xf2e1 
> <<<
>   ...
> 
> [CAUSE]
> In commit c28ea613fafa ("btrfs: subpage: fix the false data csum mismatch 
> error")
> end_bio_extent_readpage() changes to only zero the range inside the bvec
> for incoming subpage support.
> 
> But that commit is using incorrect offset to calculate the start.
> 
> For subpage, we can have a case that the whole bvec is beyond isize,
> thus we need to calculate the correct offset.
> 
> But the offending commit is using @end (bvec end), other than @start
> (bvec start) to calculate the start offset.
> 
> This means, we only zero the last byte of the bvec, not from the isize.
> This stupid bug makes the range beyond isize is not properly zeroed, and
> failed above test.
> 
> [FIX]
> Use correct @start to calculate the range start.
> 
> Reported-by: kernel test robot <oliver.s...@intel.com>
> Signed-off-by: Qu Wenruo <w...@suse.com>

Added to misc-next, thanks.

Reply via email to