public inbox for fstests@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3] btrfs/177: Add filesystem resize filter
@ 2021-08-11 14:49 Marcos Paulo de Souza
  2021-08-12  5:57 ` Qu Wenruo
  0 siblings, 1 reply; 2+ messages in thread
From: Marcos Paulo de Souza @ 2021-08-11 14:49 UTC (permalink / raw)
  To: linux-btrfs, fstests; +Cc: dsterba, guaneryu, wqu, Marcos Paulo de Souza

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 filter to simplify the output message using
size in bytes.

Signed-off-by: Marcos Paulo de Souza <mpdesouza@suse.com>
---

 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)

 common/filter.btrfs | 24 ++++++++++++++++++++++++
 tests/btrfs/177     |  8 +++++---
 tests/btrfs/177.out |  4 ++--
 3 files changed, 31 insertions(+), 5 deletions(-)

diff --git a/common/filter.btrfs b/common/filter.btrfs
index d4169cc6..fd422e08 100644
--- a/common/filter.btrfs
+++ b/common/filter.btrfs
@@ -72,6 +72,30 @@ _filter_btrfs_compress_property()
 	sed -e "s/compression=\(lzo\|zlib\|zstd\)/COMPRESSION=XXX/g"
 }
 
+# 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
+_filter_btrfs_filesystem_resize()
+{
+        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"
+}
+
 # filter error messages from btrfs prop, optionally verify against $1
 # recognized message(s):
 #  "object is not compatible with property: label"
diff --git a/tests/btrfs/177 b/tests/btrfs/177
index 966d29d7..ff241bed 100755
--- a/tests/btrfs/177
+++ b/tests/btrfs/177
@@ -10,6 +10,7 @@
 _begin_fstest auto quick swap balance
 
 . ./common/filter
+. ./common/filter.btrfs
 . ./common/btrfs
 
 # Modify as appropriate.
@@ -36,8 +37,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" |
+						_filter_btrfs_filesystem_resize
 _format_swapfile "$swapfile" $((32 * 1024 * 1024))
 swapon "$swapfile"
 
@@ -55,7 +56,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" |
+						_filter_btrfs_filesystem_resize
 
 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
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v3] btrfs/177: Add filesystem resize filter
  2021-08-11 14:49 [PATCH v3] btrfs/177: Add filesystem resize filter Marcos Paulo de Souza
@ 2021-08-12  5:57 ` Qu Wenruo
  0 siblings, 0 replies; 2+ messages in thread
From: Qu Wenruo @ 2021-08-12  5:57 UTC (permalink / raw)
  To: Marcos Paulo de Souza, linux-btrfs, fstests; +Cc: dsterba, guaneryu, wqu



On 2021/8/11 下午10:49, 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 filter to simplify the output message using
> size in bytes.

Finally we can get rid of the false alert!

>
> Signed-off-by: Marcos Paulo de Souza <mpdesouza@suse.com>
> ---
>
>   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)
>
>   common/filter.btrfs | 24 ++++++++++++++++++++++++
>   tests/btrfs/177     |  8 +++++---
>   tests/btrfs/177.out |  4 ++--
>   3 files changed, 31 insertions(+), 5 deletions(-)
>
> diff --git a/common/filter.btrfs b/common/filter.btrfs
> index d4169cc6..fd422e08 100644
> --- a/common/filter.btrfs
> +++ b/common/filter.btrfs
> @@ -72,6 +72,30 @@ _filter_btrfs_compress_property()
>   	sed -e "s/compression=\(lzo\|zlib\|zstd\)/COMPRESSION=XXX/g"
>   }
>
> +# 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

Great comments on the old and new outputs.

It's fine for the existing 177 usage, as its size is always fixed and
always GiB aligned.


But if the helper is going to be used by other test cases, we need to
take the accuracy loss into consideration.

For the new output, we only have two digits accuracy, if we convert the
output to binary, it will cause some inaccuracy.

E.g. if some tests is utilize device size like 4,000,000,000 bytes, the
pretty output will be 3.72 GiB, and if you convert it back to bytes, it
will be 3994319585.28 bytes.

Not to mention you also deleted the trailing zeros, which further damage
the accuracy.

I don't have any better idea to solve it though, thus I guess we'd
better just add some comment about this problem and call it a day.

Thanks,
Qu

> +_filter_btrfs_filesystem_resize()
> +{
> +        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"
> +}
> +
>   # filter error messages from btrfs prop, optionally verify against $1
>   # recognized message(s):
>   #  "object is not compatible with property: label"
> diff --git a/tests/btrfs/177 b/tests/btrfs/177
> index 966d29d7..ff241bed 100755
> --- a/tests/btrfs/177
> +++ b/tests/btrfs/177
> @@ -10,6 +10,7 @@
>   _begin_fstest auto quick swap balance
>
>   . ./common/filter
> +. ./common/filter.btrfs
>   . ./common/btrfs
>
>   # Modify as appropriate.
> @@ -36,8 +37,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" |
> +						_filter_btrfs_filesystem_resize
>   _format_swapfile "$swapfile" $((32 * 1024 * 1024))
>   swapon "$swapfile"
>
> @@ -55,7 +56,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" |
> +						_filter_btrfs_filesystem_resize
>
>   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
>

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-08-12  5:57 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-08-11 14:49 [PATCH v3] btrfs/177: Add filesystem resize filter Marcos Paulo de Souza
2021-08-12  5:57 ` Qu Wenruo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox