---- 在 星期三, 2021-02-24 16:10:39 Su Yue <l@xxxxxxxxxx> 撰写 ---- > > On Wed 24 Feb 2021 at 15:52, Su Yue <l@xxxxxxxxxx> wrote: > > > Cc to the author and linux-xfs, since it's xfsprogs related. > > > > On Tue 23 Feb 2021 at 21:40, Chengguang Xu > > <cgxu519@xxxxxxxxxxxx> wrote: > > > >> It seems the expected result of testcase of "Hole + Data" > >> in generic/473 is not correct, so just fix it properly. > >> > > > > But it's not proper... > > > >> Signed-off-by: Chengguang Xu <cgxu519@xxxxxxxxxxxx> > >> --- > >> tests/generic/473.out | 2 +- > >> 1 file changed, 1 insertion(+), 1 deletion(-) > >> > >> diff --git a/tests/generic/473.out b/tests/generic/473.out > >> index 75816388..f1ee5805 100644 > >> --- a/tests/generic/473.out > >> +++ b/tests/generic/473.out > >> @@ -6,7 +6,7 @@ Data + Hole > >> 1: [256..287]: hole > >> Hole + Data > >> 0: [0..127]: hole > >> -1: [128..255]: data > >> +1: [128..135]: data > >> > > The line is produced by `$XFS_IO_PROG -c "fiemap -v 0 65k" $file > > | > > _filter_fiemap`. > > 0-64k is a hole and 64k-128k is a data extent. > > fiemap ioctl always returns *complete* ranges of extents. > > > And what you want to change is only the filted output. > Without _filter_fiemap: Without _filter_fiemap: [root@centos xfstests-dev]# git diff diff --git a/tests/generic/473 b/tests/generic/473 index 5c19703e..35f28677 100755 --- a/tests/generic/473 +++ b/tests/generic/473 @@ -60,7 +60,8 @@ echo "Data + Hole" $XFS_IO_PROG -c "fiemap -v 64k 80k" $file | _filter_fiemap echo "Hole + Data" -$XFS_IO_PROG -c "fiemap -v 0 65k" $file | _filter_fiemap +#$XFS_IO_PROG -c "fiemap -v 0 65k" $file | _filter_fiemap +$XFS_IO_PROG -c "fiemap -v 0 65k" $file echo "Hole + Data + Hole" $XFS_IO_PROG -c "fiemap -v 0k 130k" $file | _filter_fiemap [root@centos xfstests-dev]# ./check generic/473 FSTYP -- ext4 PLATFORM -- Linux/x86_64 centos 5.11.0+ #5 SMP Tue Feb 23 21:02:27 CST 2021 MKFS_OPTIONS -- /dev/mapper/workvg-test2 MOUNT_OPTIONS -- -o acl,user_xattr /dev/mapper/workvg-test2 /mnt/scratch generic/473 1s ... - output mismatch (see /git/xfstests-dev/results//generic/473.out.bad) --- tests/generic/473.out 2021-02-24 16:51:23.254845067 +0800 +++ /git/xfstests-dev/results//generic/473.out.bad 2021-02-24 16:52:04.440737816 +0800 @@ -5,8 +5,10 @@ 0: [128..255]: data 1: [256..287]: hole Hole + Data -0: [0..127]: hole -1: [128..255]: data +/mnt/test/fiemap.473: + EXT: FILE-OFFSET BLOCK-RANGE TOTAL FLAGS ... (Run 'diff -u /git/xfstests-dev/tests/generic/473.out /git/xfstests-dev/results//generic/473.out.bad' to see the entire diff) Ran: generic/473 Failures: generic/473 Failed 1 of 1 tests [root@centos xfstests-dev]# diff -u /git/xfstests-dev/tests/generic/473.out /git/xfstests-dev/results//generic/473.out.bad --- /git/xfstests-dev/tests/generic/473.out 2021-02-24 16:51:23.254845067 +0800 +++ /git/xfstests-dev/results//generic/473.out.bad 2021-02-24 16:52:04.440737816 +0800 @@ -5,8 +5,10 @@ 0: [128..255]: data 1: [256..287]: hole Hole + Data -0: [0..127]: hole -1: [128..255]: data +/mnt/test/fiemap.473: + EXT: FILE-OFFSET BLOCK-RANGE TOTAL FLAGS + 0: [0..127]: hole 128 + 1: [128..135]: 274560..274567 8 0x1 Hole + Data + Hole 0: [0..127]: hole 1: [128..255]: data > > /mnt/test/fiemap.473: > | > EXT: FILE-OFFSET BLOCK-RANGE TOTAL FLAGS > | > 0: [0..127]: hole 128 > | > 1: [128..255]: 26792..26919 128 0x0 > > [128..255] corresponds to the BLOCK-RANGE of the extent > 26792..26919. > > > You may ask why the ending hole range is not aligned to 128 in > > 473.out. Because > > fiemap ioctl returns nothing of querying holes. xfs_io does the > > extra > > print work for holes. > > > > xfsprogs-dev/io/fiemap.c: > > for holes: > > 153 if (lstart > llast) { > > 154 print_hole(0, 0, 0, cur_extent, lflag, true, llast, > > lstart); > > 155 cur_extent++; > > 156 num_printed++; > > 157 } > > > > for the ending hole: > > 381 if (cur_extent && last_logical < range_end) > > 382 print_hole(foff_w, boff_w, tot_w, cur_extent, > > lflag, !vflag, > > 383 BTOBBT(last_logical), BTOBBT(range_end)); > > > >> Hole + Data + Hole > >> 0: [0..127]: hole > >> 1: [128..255]: data > >