From dedf2c79f568f50d91d1ba2c7d5a1a6d2894539f Mon Sep 17 00:00:00 2001 From: Chandan Rajendra Date: Mon, 21 Dec 2015 18:01:29 +1100 Subject: [PATCH] filter: Filter xfs_io and od's output in units of FS block size The helpers introduced in this commit will be used to make btrfs tests that assume 4k as the block size to work on non-4k blocksized filesystem instances as well. Signed-off-by: Chandan Rajendra Reviewed-by: Filipe Manana Signed-off-by: Dave Chinner --- common/filter | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/common/filter b/common/filter index af456c93..05f2fab3 100644 --- a/common/filter +++ b/common/filter @@ -229,6 +229,38 @@ _filter_xfs_io_unique() common_line_filter | _filter_xfs_io } +_filter_xfs_io_units_modified() +{ + UNIT=$1 + UNIT_SIZE=$2 + + $AWK_PROG -v unit="$UNIT" -v unit_size=$UNIT_SIZE ' + /wrote/ { + split($2, bytes, "/") + + bytes_written = strtonum(bytes[1]) + + offset = strtonum($NF) + + unit_start = offset / unit_size + unit_start = int(unit_start) + unit_end = (offset + bytes_written - 1) / unit_size + unit_end = int(unit_end) + + printf("%ss modified: [%d - %d]\n", unit, unit_start, unit_end) + + next + } + ' +} + +_filter_xfs_io_blocks_modified() +{ + BLOCK_SIZE=$(get_block_size $SCRATCH_MNT) + + _filter_xfs_io_units_modified "Block" $BLOCK_SIZE +} + _filter_test_dir() { sed -e "s,$TEST_DEV,TEST_DEV,g" -e "s,$TEST_DIR,TEST_DIR,g" @@ -323,5 +355,18 @@ _filter_ro_mount() { -e "s/mount: cannot mount block device/mount: cannot mount/g" } +_filter_od() +{ + BLOCK_SIZE=$(get_block_size $SCRATCH_MNT) + $AWK_PROG -v block_size=$BLOCK_SIZE ' + /^[0-9]+/ { + offset = strtonum("0"$1); + $1 = sprintf("%o", offset / block_size); + print $0; + } + /\*/ + ' +} + # make sure this script returns success /bin/true -- 2.47.3