From: Chandan Rajendra Date: Mon, 24 Sep 2018 15:19:36 +0000 (+0530) Subject: common/punch: Filter fiemap output by FS block size X-Git-Tag: v2022.05.01~1406 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=4ba5b5073556637d46a80e6b5ab298006a3e354c;p=users%2Fhch%2Fxfstests-dev.git common/punch: Filter fiemap output by FS block size When testing FS instances of block size other than 4k, the output of fiemap command will not match those in *.out files. This commit adds an optional "block size" argument to _filter_fiemap() which prints fiemap output in units of block size. Signed-off-by: Chandan Rajendra Tested-by: Zorro Lang Signed-off-by: Eryu Guan --- diff --git a/common/punch b/common/punch index 108bad8ec..391d43949 100644 --- a/common/punch +++ b/common/punch @@ -165,7 +165,11 @@ _test_punch() { _coalesce_extents() { - awk -F: ' + block_size=$1 + + [[ -z $block_size ]] && block_size=512 + + awk -v block_size="$block_size" -F: ' { range = $2; type = $3; @@ -176,19 +180,24 @@ _coalesce_extents() if (type != prev_type) { if (prev_type != "") - printf("%u]:%s\n", low - 1, prev_type); - printf("%u: [%u..", out_count++, low); + printf("%u]:%s\n", (low * 512 / block_size) - 1, + prev_type); + printf("%u: [%u..", out_count++, + (low * 512) / block_size); prev_type = type; } } END { if (prev_type != "") - printf("%u]:%s\n", high, prev_type); + printf("%u]:%s\n", ((high + 1) * 512 / block_size) - 1, + prev_type); }' } _filter_fiemap() { + block_size=$1 + $AWK_PROG ' $3 ~ /hole/ { print $1, $2, $3; @@ -201,7 +210,7 @@ _filter_fiemap() $5 ~ /0x[[:xdigit:]]+/ { print $1, $2, "data"; }' | - _coalesce_extents + _coalesce_extents $block_size } _filter_fiemap_flags()