From c7c1063809efe4c3ff157282510dc87d0e54bd67 Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Tue, 31 Jan 2023 16:51:40 -0800 Subject: [PATCH] generic/500: skip this test if formatting fails This testcase exercises what happens when we race a filesystem perforing discard operations against a thin provisioning device that has run out of space. To constrain runtime, it creates a 128M thinp volume and formats it. However, if that initial format fails because (say) the 128M volume is too small, then the test fails. This is really a case of test preconditions not being satisfied, so let's make the test _notrun when this happens. Signed-off-by: Darrick J. Wong Reviewed-by: Zorro Lang Signed-off-by: Zorro Lang --- common/dmthin | 7 ++++++- common/rc | 22 +++++++++++----------- tests/generic/500 | 3 ++- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/common/dmthin b/common/dmthin index 91147e47..7107d508 100644 --- a/common/dmthin +++ b/common/dmthin @@ -234,5 +234,10 @@ _dmthin_mount() _dmthin_mkfs() { _scratch_options mkfs - _mkfs_dev $SCRATCH_OPTIONS $@ $DMTHIN_VOL_DEV + _mkfs_dev $SCRATCH_OPTIONS "$@" $DMTHIN_VOL_DEV +} +_dmthin_try_mkfs() +{ + _scratch_options mkfs + _try_mkfs_dev $SCRATCH_OPTIONS "$@" $DMTHIN_VOL_DEV } diff --git a/common/rc b/common/rc index 36eb90e1..376a0138 100644 --- a/common/rc +++ b/common/rc @@ -604,9 +604,8 @@ _test_mkfs() esac } -_mkfs_dev() +_try_mkfs_dev() { - local tmp=`mktemp -u` case $FSTYP in nfs*) # do nothing for nfs @@ -627,26 +626,27 @@ _mkfs_dev() # do nothing for pvfs2 ;; udf) - $MKFS_UDF_PROG $MKFS_OPTIONS $* 2>$tmp.mkfserr 1>$tmp.mkfsstd + $MKFS_UDF_PROG $MKFS_OPTIONS $* ;; btrfs) - $MKFS_BTRFS_PROG $MKFS_OPTIONS $* 2>$tmp.mkfserr 1>$tmp.mkfsstd + $MKFS_BTRFS_PROG $MKFS_OPTIONS $* ;; ext2|ext3|ext4) - $MKFS_PROG -t $FSTYP -- -F $MKFS_OPTIONS $* \ - 2>$tmp.mkfserr 1>$tmp.mkfsstd + $MKFS_PROG -t $FSTYP -- -F $MKFS_OPTIONS $* ;; xfs) - $MKFS_PROG -t $FSTYP -- -f $MKFS_OPTIONS $* \ - 2>$tmp.mkfserr 1>$tmp.mkfsstd + $MKFS_PROG -t $FSTYP -- -f $MKFS_OPTIONS $* ;; *) - yes | $MKFS_PROG -t $FSTYP -- $MKFS_OPTIONS $* \ - 2>$tmp.mkfserr 1>$tmp.mkfsstd + yes | $MKFS_PROG -t $FSTYP -- $MKFS_OPTIONS $* ;; esac +} - if [ $? -ne 0 ]; then +_mkfs_dev() +{ + local tmp=`mktemp -u` + if ! _try_mkfs_dev "$@" 2>$tmp.mkfserr 1>$tmp.mkfsstd; then # output stored mkfs output cat $tmp.mkfserr >&2 cat $tmp.mkfsstd diff --git a/tests/generic/500 b/tests/generic/500 index bc84d219..1151c8f2 100755 --- a/tests/generic/500 +++ b/tests/generic/500 @@ -58,7 +58,8 @@ CLUSTER_SIZE=$((64 * 1024 / 512)) # 64K _dmthin_init $BACKING_SIZE $VIRTUAL_SIZE $CLUSTER_SIZE 0 _dmthin_set_fail -_dmthin_mkfs +_dmthin_try_mkfs >> $seqres.full 2>&1 || \ + _notrun "Could not format small thinp filesystem for test" _dmthin_mount # There're two bugs at here, one is dm-thin bug, the other is filesystem -- 2.39.5