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 <chandan@linux.vnet.ibm.com>
Reviewed-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
Chandan Rajendra
2015-12-21 18:01:29 +11:00
committed by Dave Chinner
parent 2274eb58d8
commit dedf2c79f5
+45
View File
@@ -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