Re: [PATCHv2] progs: mkfs-tests: Skip test if truncate failed with EFBIG

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Mar 02, 2020 at 09:36:49PM +0100, David Sterba wrote:
> On Mon, Mar 02, 2020 at 05:30:06PM -0300, Marcos Paulo de Souza wrote:
>
> > >From 52b96ac75c2f8876f1ed9424cef92a4557306009 Mon Sep 17 00:00:00 2001
> > From: Marcos Paulo de Souza <mpdesouza@xxxxxxxx>
> > Date: Sat, 15 Feb 2020 19:47:12 -0300
> > Subject: [PATCH] progs: mkfs-tests: Skip test if truncate failed with EFBIG
> > 
> > The truncate command can fail in some platform like PPC32[1] because it
> > can't create files up to 6E in size. Skip the test if this was the
> > problem why truncate failed.
> > 
> > [1]: https://github.com/kdave/btrfs-progs/issues/192
> > 
> > Signed-off-by: Marcos Paulo de Souza <mpdesouza@xxxxxxxx>
> > ---
> >  tests/mkfs-tests/018-multidevice-overflow/test.sh | 12 +++++++++++-
> >  1 file changed, 11 insertions(+), 1 deletion(-)
> > 
> > diff --git a/tests/mkfs-tests/018-multidevice-overflow/test.sh b/tests/mkfs-tests/018-multidevice-overflow/test.sh
> > index 6c2f4dba..b8e2b18d 100755
> > --- a/tests/mkfs-tests/018-multidevice-overflow/test.sh
> > +++ b/tests/mkfs-tests/018-multidevice-overflow/test.sh
> > @@ -14,7 +14,17 @@ prepare_test_dev
> >  run_check_mkfs_test_dev
> >  run_check_mount_test_dev
> >  
> > -run_check $SUDO_HELPER truncate -s 6E "$TEST_MNT/img1"
> > +# truncate can fail with EFBIG if the OS cannot created a 6E file
> > +stdout=$($SUDO_HELPER truncate -s 6E "$TEST_MNT/img1" 2>&1)
> 
> So this is reading and parsing stdout, but not using the standard
> helpers that also log the commands. The stdout approach probably works
> but I'd still like to avoid using plain $(...)

What do you think about the patches bellow? With these two patches applied you
can drop this one. Thanks.
>From f54ec71fa4e6c4153a57d519b3524300946cd8b8 Mon Sep 17 00:00:00 2001
From: Marcos Paulo de Souza <mpdesouza@xxxxxxxx>
Date: Thu, 5 Mar 2020 23:57:52 -0300
Subject: [PATCH 1/2] btrfs-progs: tests: common: Introduce run_mayfail_stdout

This helper would help to run tests that can fail, but depending on the
output of the error we can skip the test instead of failing.

Signed-off-by: Marcos Paulo de Souza <mpdesouza@xxxxxxxx>
---
 tests/common | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/tests/common b/tests/common
index f5efc58b..2f698e08 100644
--- a/tests/common
+++ b/tests/common
@@ -216,6 +216,37 @@ run_mayfail()
 	fi
 }
 
+# same as run_mayfail but prints the error message to stdout too
+run_mayfail_stdout()
+{
+	local spec
+	local ins
+	local ret
+
+	ins=$(_get_spec_ins "$@")
+	spec=$(($ins-1))
+	spec=$(_cmd_spec "${@:$spec}")
+	set -- "${@:1:$(($ins-1))}" $spec "${@: $ins}"
+	echo "====== RUN MAYFAIL $@" >> "$RESULTS" 2>&1
+	if [[ $TEST_LOG =~ tty ]]; then echo "CMD(mayfail): $@" > /dev/tty; fi
+
+	if [ "$1" = 'root_helper' ]; then
+		"$@" 2>&1 | tee -a "$RESULTS"
+	else
+		$INSTRUMENT "$@" 2>&1 | tee -a "$RESULTS"
+	fi
+	ret=${PIPESTATUS[0]}
+	if [ $ret != 0 ]; then
+		echo "failed (ignored, ret=$ret): $@" >> "$RESULTS"
+		if [ $ret == 139 ]; then
+			_fail "mayfail: returned code 139 (SEGFAULT), not ignored"
+		elif [ $ret == 134 ]; then
+			_fail "mayfail: returned code 134 (SIGABRT), not ignored"
+		fi
+		return $ret
+	fi
+}
+
 # first argument is error message to print if it fails, otherwise
 # same as run_check but expects the command to fail, output is logged
 run_mustfail()
-- 
2.25.0

>From 085708404477cbb40d1c6b43f4a59d9611e5eddc Mon Sep 17 00:00:00 2001
From: Marcos Paulo de Souza <mpdesouza@xxxxxxxx>
Date: Sat, 15 Feb 2020 19:47:12 -0300
Subject: [PATCH 2/2] progs: mkfs-tests: 018: Skip test if truncate failed with
 EFBIG

The truncate command can fail in some platform like PPC32[1] because it
can't create files up to 6E in size. Skip the test if this was the
problem why truncate failed.

[1]: https://github.com/kdave/btrfs-progs/issues/192

Signed-off-by: Marcos Paulo de Souza <mpdesouza@xxxxxxxx>
---
 tests/mkfs-tests/018-multidevice-overflow/test.sh | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/tests/mkfs-tests/018-multidevice-overflow/test.sh b/tests/mkfs-tests/018-multidevice-overflow/test.sh
index 6c2f4dba..23c0b634 100755
--- a/tests/mkfs-tests/018-multidevice-overflow/test.sh
+++ b/tests/mkfs-tests/018-multidevice-overflow/test.sh
@@ -14,7 +14,18 @@ prepare_test_dev
 run_check_mkfs_test_dev
 run_check_mount_test_dev
 
-run_check $SUDO_HELPER truncate -s 6E "$TEST_MNT/img1"
+# truncate can fail with EFBIG if the OS cannot created a 6E file
+stdout=$(run_mayfail_stdout $SUDO_HELPER truncate -s 6E "$TEST_MNT/img1" 2>&1)
+ret=$?
+
+if [ $ret -ne 0 ]; then
+	run_check_umount_test_dev
+	if [[ $stdout == *"File too large"* ]]; then
+		_not_run "Current kernel could not create a 6E file"
+	fi
+	_fail "Command failed: $stdout"
+fi
+
 run_check $SUDO_HELPER truncate -s 6E "$TEST_MNT/img2"
 run_check $SUDO_HELPER truncate -s 6E "$TEST_MNT/img3"
 
-- 
2.25.0


[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux