On 2021/8/12 下午7:30, Marcos Paulo de Souza wrote:
Commit 78aa1d95dd99 ("btrfs-progs: fi resize: make output more readable") added the device id of the resized fs along with a pretty printed size. Create a new function to simplify the output message using size in bytes. Signed-off-by: Marcos Paulo de Souza <mpdesouza@xxxxxxxx>
Now with the filter limited to this test case, and we have full control on the resized size, it addressed my biggest concern about the loss of accuracy during convert. Reviewed-by: Qu Wenruo <wqu@xxxxxxxx> Thanks, Qu
--- Changes since v3: * Move the new function outside of the btrfs.filter, since it's meant to fix only this problem now. (Qu) Changes since v2: * Check the output to verify if the resize really happened (Qu) Changes since v1: * Do not adapt the output message to the newer format (Qu) tests/btrfs/177 | 33 ++++++++++++++++++++++++++++++--- tests/btrfs/177.out | 4 ++-- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/tests/btrfs/177 b/tests/btrfs/177 index 966d29d7..3c206140 100755 --- a/tests/btrfs/177 +++ b/tests/btrfs/177 @@ -16,6 +16,32 @@ _begin_fstest auto quick swap balance _supported_fs btrfs _require_scratch_swapfile +# Eliminate the differences between the old and new output formats +# Old format: +# Resize 'SCRATCH_MNT' of '1073741824' +# New format: +# Resize device id 1 (SCRATCH_DEV) from 3.00GiB to 1.00GiB +# Convert both outputs to: +# Resized to 1073741824 +_convert_resize_output() +{ + local _field + local _val + local _suffix + _field=`$AWK_PROG '{print $NF}' | tr -d "'"` + # remove trailing zeroes + _val=`echo $_field | $AWK_PROG '{print $1 * 1}'` + # get the first unit char, for example return G in case we have GiB + _suffix=`echo $_field | grep -o "[GMB]"` + if [ -z "$_suffix" ]; then + _suffix="B" + fi + _val=`echo "$_val$_suffix" | _filter_size_to_bytes` + echo "Resized to $_val" +} + + + swapfile="$SCRATCH_MNT/swap" _require_scratch_size $((3 * 1024 * 1024)) #kB @@ -36,8 +62,8 @@ dd if=/dev/zero of="$SCRATCH_MNT/refill" bs=4096 >> $seqres.full 2>&1 # Now add more space and create a swap file. We know that the first $fssize # of the filesystem was used, so the swap file must be in the new part of the # filesystem. -$BTRFS_UTIL_PROG filesystem resize $((3 * fssize)) "$SCRATCH_MNT" | \ - _filter_scratch +$BTRFS_UTIL_PROG filesystem resize $((3 * fssize)) "$SCRATCH_MNT" | + _convert_resize_output _format_swapfile "$swapfile" $((32 * 1024 * 1024)) swapon "$swapfile" @@ -55,7 +81,8 @@ $BTRFS_UTIL_PROG filesystem resize 1G "$SCRATCH_MNT" 2>&1 | grep -o "Text file b swapoff "$swapfile" # It should work again after swapoff. -$BTRFS_UTIL_PROG filesystem resize $fssize "$SCRATCH_MNT" | _filter_scratch +$BTRFS_UTIL_PROG filesystem resize $fssize "$SCRATCH_MNT" | + _convert_resize_output status=0 exit diff --git a/tests/btrfs/177.out b/tests/btrfs/177.out index 63aca0e5..eb374d34 100644 --- a/tests/btrfs/177.out +++ b/tests/btrfs/177.out @@ -1,4 +1,4 @@ QA output created by 177 -Resize 'SCRATCH_MNT' of '3221225472' +Resized to 3221225472 Text file busy -Resize 'SCRATCH_MNT' of '1073741824' +Resized to 1073741824