From: Dave Chinner <david@fromorbit.com>
To: fstests@vger.kernel.org
Subject: [PATCH 13/40] fstests: clean up loop device instantiation
Date: Wed, 27 Nov 2024 15:51:43 +1100 [thread overview]
Message-ID: <20241127045403.3665299-14-david@fromorbit.com> (raw)
In-Reply-To: <20241127045403.3665299-1-david@fromorbit.com>
From: Dave Chinner <dchinner@redhat.com>
Lots of tests do there own special thing with loop devices rather
than using _create_loop_device() and _destroy_loop_device(). This
oftens means they do not clean up after themselves properly,
leaving stale loop devices around that result in unmountable test or
scratch devices. This is common when tests are killed by user
interrupt.
Even the tests that do use _destroy_loop_device and try to clean up
often do it incorrectly, leading to spurious error messages.
Some tests try to use dynamic instantiation via "mount -o loop",
but then don't clean up in the correct order or hack around to find
the loop device that was instantiated because the test needs to know
the instantiated device name
Clean this up by converting all the tests to use
_create_loop_device() and _destroy_loop_device(). In all the tests,
use the variable "loop_dev" for the device consistently. In
_destroy_loop_device(), test that a device name has been passed
so that we don't try to clean up the same device twice (e.g. once
before test exit and again from the _cleanup() function). When we
destroy a loop device, unset the variable used to hold the loop
device name so that we don't try to destroy it twice.
This results in much more reliable cleanup and clean exit from
fstests when killed by the user.
Signed-off-by: Dave Chinner <dchinner@redhat.com>
---
common/metadump | 32 ++++++++++++--------------------
tests/generic/067 | 11 ++++++++---
tests/generic/361 | 6 +++++-
tests/generic/563 | 14 +++++++++-----
tests/generic/564 | 12 ++++++------
tests/generic/590 | 9 ++++++---
tests/generic/744 | 4 ++--
tests/generic/746 | 6 +++++-
tests/xfs/014 | 7 +++++--
tests/xfs/049 | 35 +++++++++++++++++++++--------------
tests/xfs/073 | 24 +++++++++++++-----------
tests/xfs/074 | 21 ++++++++++++---------
tests/xfs/078 | 16 +++++++++-------
tests/xfs/148 | 23 ++++++++++++++---------
tests/xfs/149 | 4 ++++
tests/xfs/216 | 15 ++++++++++-----
tests/xfs/217 | 22 ++++++++++++++++------
tests/xfs/250 | 14 +++++++++-----
tests/xfs/259 | 13 ++++++++-----
tests/xfs/513 | 44 ++++++++++++++++++++------------------------
tests/xfs/521 | 8 ++++++--
tests/xfs/528 | 10 +++++++---
tests/xfs/530 | 11 ++++++-----
tests/xfs/606 | 12 ++++++++----
tests/xfs/613 | 40 ++++++++++++++--------------------------
tests/xfs/613.out | 1 -
26 files changed, 235 insertions(+), 179 deletions(-)
diff --git a/common/metadump b/common/metadump
index 3373edfe9..bc3038e3b 100644
--- a/common/metadump
+++ b/common/metadump
@@ -24,17 +24,9 @@ _xfs_cleanup_verify_metadump()
test -n "$XFS_METADUMP_FILE" && rm -f "$XFS_METADUMP_FILE"
- if [ -n "$XFS_METADUMP_IMG" ]; then
- losetup -n -a -O BACK-FILE,NAME | grep "^$XFS_METADUMP_IMG" | while read backing ldev; do
- losetup -d "$ldev"
- done
-
- # Don't call rm directly with a globbed argument here to avoid
- # issues issues with variable expansions.
- for img in "$XFS_METADUMP_IMG"*; do
- test -e "$img" && rm -f "$img"
- done
- fi
+ [ -n "$md_data_loop_dev" ] && _destroy_loop_device $md_data_loop_dev
+ [ -n "$md_log_loop_dev" ] && _destroy_loop_device $md_log_loop_dev
+ rm -f $data_img $log_img
}
# Can xfs_metadump snapshot the fs metadata to a v1 metadump file?
@@ -122,25 +114,25 @@ _xfs_verify_metadump_v2()
_scratch_xfs_mdrestore $metadump_file
# Create loopdev for data device so we can mount the fs
- data_loop=$(_create_loop_device $data_img)
+ md_data_loop_dev=$(_create_loop_device $data_img)
# Create loopdev for log device if we recovered anything
- test -s "$log_img" && log_loop=$(_create_loop_device $log_img)
+ test -s "$log_img" && md_log_loop_dev=$(_create_loop_device $log_img)
# Mount fs, run an extra test, fsck, and unmount
- SCRATCH_DEV=$data_loop SCRATCH_LOGDEV=$log_loop _scratch_mount
+ SCRATCH_DEV=$md_data_loop_dev SCRATCH_LOGDEV=$md_log_loop_dev _scratch_mount
if [ -n "$extra_test" ]; then
- SCRATCH_DEV=$data_loop SCRATCH_LOGDEV=$log_loop $extra_test
+ SCRATCH_DEV=$md_data_loop_dev SCRATCH_LOGDEV=$md_log_loop_dev $extra_test
fi
- SCRATCH_DEV=$data_loop SCRATCH_LOGDEV=$log_loop _check_xfs_scratch_fs
- SCRATCH_DEV=$data_loop _scratch_unmount
+ SCRATCH_DEV=$md_data_loop_dev SCRATCH_LOGDEV=$md_log_loop_dev _check_xfs_scratch_fs
+ _unmount $md_data_loop_dev
# Tear down what we created
- if [ -b "$log_loop" ]; then
- _destroy_loop_device $log_loop
+ if [ -b "$md_log_loop_dev" ]; then
+ _destroy_loop_device $md_log_loop_dev
rm -f $log_img
fi
- _destroy_loop_device $data_loop
+ _destroy_loop_device $md_data_loop_dev
rm -f $data_img
}
diff --git a/tests/generic/067 b/tests/generic/067
index ccb1e3fbb..b45ae834f 100755
--- a/tests/generic/067
+++ b/tests/generic/067
@@ -37,13 +37,18 @@ mount_nonexistent_mnt()
$MOUNT_PROG $SCRATCH_DEV $TEST_DIR/nosuchdir >>$seqres.full 2>&1
}
-# fs driver should be able to handle mounting a free loop device gracefully
-# xfs ever hung, "ec53d1d xfs: don't block on buffer read errors" fixed it
+# fs driver should be able to handle mounting a free loop device gracefully xfs
+# ever hung, "ec53d1d xfs: don't block on buffer read errors" fixed it
+#
+# Using 'losetup -f' like this is racy. We might end up mounting a real loop dev
+# here, so unmount $SCRATCH_MNT (not the loop dev we might not own!) and ignore
+# any error it might return.
mount_free_loopdev()
{
echo "# mount a free loop device" >>$seqres.full
loopdev=`losetup -f`
- $MOUNT_PROG -t $FSTYP $loopdev $SCRATCH_MNT >>$seqres.full 2>&1
+ _mount $loopdev $SCRATCH_MNT >>$seqres.full 2>&1
+ _unmount $SCRATCH_MNT >> /dev/null 2>&1
}
# mount with wrong fs type specified.
diff --git a/tests/generic/361 b/tests/generic/361
index 7273dd056..e2b798436 100755
--- a/tests/generic/361
+++ b/tests/generic/361
@@ -17,7 +17,7 @@ _begin_fstest auto quick
_cleanup()
{
_unmount $fs_mnt
- _destroy_loop_device $loop_dev
+ [ -n "$loop_dev" ] && _destroy_loop_device $loop_dev
cd /
rm -f $tmp.*
}
@@ -54,6 +54,10 @@ $XFS_IO_PROG -fc "pwrite 0 520m" $fs_mnt/testfile >>$seqres.full 2>&1
# remount should not hang
$MOUNT_PROG -o remount,ro $fs_mnt >>$seqres.full 2>&1
+_unmount $fs_mnt
+_destroy_loop_device $loop_dev
+unset loop_dev
+
# success, all done
echo "Silence is golden"
status=0
diff --git a/tests/generic/563 b/tests/generic/563
index f0d2f404c..34d21170c 100755
--- a/tests/generic/563
+++ b/tests/generic/563
@@ -87,12 +87,12 @@ reset()
# cgroup I/O accounting doesn't work on partitions. Use a loop device to rule
# that out.
-LOOP_DEV=$(_create_loop_device $SCRATCH_DEV)
-smajor=$((0x`stat -L -c %t $LOOP_DEV`))
-sminor=$((0x`stat -L -c %T $LOOP_DEV`))
+loop_dev=$(_create_loop_device $SCRATCH_DEV)
+smajor=$((0x`stat -L -c %t $loop_dev`))
+sminor=$((0x`stat -L -c %T $loop_dev`))
-_mkfs_dev $LOOP_DEV >> $seqres.full 2>&1
-_mount $LOOP_DEV $SCRATCH_MNT || _fail "mount failed"
+_mkfs_dev $loop_dev >> $seqres.full 2>&1
+_mount $loop_dev $SCRATCH_MNT || _fail "mount failed"
blksize=$(_get_block_size "$SCRATCH_MNT")
@@ -147,6 +147,10 @@ if [ "$drop_io_cgroup" = 1 ]; then
echo "-io" > $cgdir/cgroup.subtree_control || _fail "subtree control"
fi
+_unmount $SCRATCH_MNT
+_destroy_loop_device $loop_dev
+unset loop_dev
+
# success, all done
status=0
exit
diff --git a/tests/generic/564 b/tests/generic/564
index 647472d78..b66b72496 100755
--- a/tests/generic/564
+++ b/tests/generic/564
@@ -19,7 +19,7 @@ _cleanup()
{
cd /
rm -rf $tmp.*
- [ -z "$loopdev" ] || _destroy_loop_device $loopdev
+ [ -n "$loop_dev" ] && _destroy_loop_device $loop_dev
}
# Import common functions.
@@ -72,11 +72,11 @@ $XFS_IO_PROG -f -c "copy_range -l 32k $testdir" $testdir/copy
echo
echo source/destination as blkdev returns EINVAL
$XFS_IO_PROG -f -c "truncate 128k" $testdir/img >> $seqres.full 2>&1
-loopdev=`_create_loop_device $testdir/img`
-$XFS_IO_PROG -c "copy_range -l 32k $testdir/file" $loopdev
-$XFS_IO_PROG -f -c "copy_range -l 32k $loopdev" $testdir/copy
-_destroy_loop_device $loopdev
-loopdev=
+loop_dev=`_create_loop_device $testdir/img`
+$XFS_IO_PROG -c "copy_range -l 32k $testdir/file" $loop_dev
+$XFS_IO_PROG -f -c "copy_range -l 32k $loop_dev" $testdir/copy
+_destroy_loop_device $loop_dev
+unset loop_dev
echo
echo source/destination as chardev returns EINVAL
diff --git a/tests/generic/590 b/tests/generic/590
index 2b7ccfb53..2eefa2c62 100755
--- a/tests/generic/590
+++ b/tests/generic/590
@@ -15,9 +15,10 @@ _begin_fstest auto prealloc preallocrw
# Override the default cleanup function.
_cleanup()
{
+ _scratch_unmount
+ [ -n $loop_dev ] && _destroy_loop_device $loop_dev
cd /
rm -f $tmp.*
- test -n "$loop" && _destroy_loop_device "$loop"
rm -f "$TEST_DIR/$seq"
}
@@ -56,9 +57,9 @@ if [[ $FSTYP = xfs ]]; then
loopsz="$((filesz + (1 << 26)))"
_require_fs_space "$TEST_DIR" $((loopsz / 1024))
$XFS_IO_PROG -c "truncate $loopsz" -f "$TEST_DIR/$seq"
- loop="$(_create_loop_device "$TEST_DIR/$seq")"
+ loop_dev="$(_create_loop_device "$TEST_DIR/$seq")"
USE_EXTERNAL=yes
- SCRATCH_RTDEV="$loop"
+ SCRATCH_RTDEV="$loop_dev"
disabled_features=()
# disable reflink if not supported by realtime devices
@@ -114,6 +115,8 @@ $XFS_IO_PROG -c "truncate 0" -c fsync "$SCRATCH_MNT/file"
# We need to do this before the loop device gets torn down.
_scratch_unmount
_check_scratch_fs
+_destroy_loop_device $loop_dev
+unset loop_dev
echo "Silence is golden"
status=0
diff --git a/tests/generic/744 b/tests/generic/744
index df8f6ae9b..cda10e0f6 100755
--- a/tests/generic/744
+++ b/tests/generic/744
@@ -17,8 +17,8 @@ _cleanup()
_unmount $mnt2 &> /dev/null
_unmount $mnt1 &> /dev/null
- [ -b "$loop_dev2" ] && losetup -d $loop_dev2
- [ -b "$loop_dev1" ] && losetup -d $loop_dev1
+ [ -b "$loop_dev2" ] && _destroy_loop_device $loop_dev2
+ [ -b "$loop_dev1" ] && _destroy_loop_device $loop_dev1
[ -n "$seq" ] && rm -rf $TEST_DIR/$seq
}
diff --git a/tests/generic/746 b/tests/generic/746
index 671910606..ba8ed25e8 100755
--- a/tests/generic/746
+++ b/tests/generic/746
@@ -39,7 +39,7 @@ esac
_cleanup()
{
_unmount $loop_mnt &> /dev/null
- _destroy_loop_device $loop_dev
+ [ -n "$loop_dev" ] && _destroy_loop_device $loop_dev
if [ $status -eq 0 ]; then
rm -rf $tmp
rm $img_file
@@ -223,5 +223,9 @@ while read line; do
done < $fiemap_after
echo "done."
+_unmount $loop_mnt
+_destroy_loop_device $loop_dev
+unset loop_dev
+
status=0
exit
diff --git a/tests/xfs/014 b/tests/xfs/014
index f638e4b16..39ea40e2a 100755
--- a/tests/xfs/014
+++ b/tests/xfs/014
@@ -23,6 +23,7 @@ _cleanup()
{
cd /
_unmount $LOOP_MNT 2>/dev/null
+ [ -n "$loop_dev" ] && _destroy_loop_device $loop_dev
_scratch_unmount 2>/dev/null
rm -f $tmp.*
}
@@ -166,19 +167,21 @@ LOOP_FILE=$SCRATCH_MNT/$seq.fs
LOOP_MNT=$SCRATCH_MNT/$seq.mnt
$MKFS_XFS_PROG -d "file=1,name=$LOOP_FILE,size=10g" >> $seqres.full 2>&1
+loop_dev=$(_create_loop_device $LOOP_FILE)
mkdir -p $LOOP_MNT
-_mount -o uquota,gquota $LOOP_FILE $LOOP_MNT || \
+_mount -o uquota,gquota $loop_dev $LOOP_MNT || \
_fail "Failed to mount loop fs."
_test_enospc $LOOP_MNT
_test_edquot $LOOP_MNT
_unmount $LOOP_MNT
+_destroy_loop_device $loop_dev
+unset loop_dev
echo $orig_sp_time > /proc/sys/fs/xfs/speculative_prealloc_lifetime
_scratch_unmount
-
status=0
exit
diff --git a/tests/xfs/049 b/tests/xfs/049
index 4163a144f..cdcddf764 100755
--- a/tests/xfs/049
+++ b/tests/xfs/049
@@ -12,16 +12,17 @@ _begin_fstest rw auto quick
# Override the default cleanup function.
_cleanup()
{
- cd /
- umount $SCRATCH_MNT/test2 > /dev/null 2>&1
- umount $SCRATCH_MNT/test > /dev/null 2>&1
- rm -f $tmp.*
+ cd /
+ _unmount $SCRATCH_MNT/test2 > /dev/null 2>&1
+ _unmount $SCRATCH_MNT/test > /dev/null 2>&1
+ [ -n "$loop_dev2" ] && _destroy_loop_device $loop_dev2
+ [ -n "$loop_dev1" ] && _destroy_loop_device $loop_dev1
+ rm -f $tmp.*
- if [ -w $seqres.full ]
- then
- echo "--- mounts at end (after cleanup)" >> $seqres.full
- mount >> $seqres.full
- fi
+ if [ -w $seqres.full ]; then
+ echo "--- mounts at end (after cleanup)" >> $seqres.full
+ mount >> $seqres.full
+ fi
}
# Import common functions.
@@ -64,7 +65,8 @@ mkdir $SCRATCH_MNT/test $SCRATCH_MNT/test2 >> $seqres.full 2>&1 \
|| _fail "!!! failed to make mount points"
_log "Mount xfs via loop"
-mount -t xfs -o loop $SCRATCH_MNT/test.xfs $SCRATCH_MNT/test >> $seqres.full 2>&1 \
+loop_dev1=$(_create_loop_device $SCRATCH_MNT/test.xfs)
+_mount $loop_dev1 $SCRATCH_MNT/test >> $seqres.full 2>&1 \
|| _fail "!!! failed to loop mount xfs"
_log "stress"
@@ -80,11 +82,12 @@ dd if=/dev/zero of=$SCRATCH_MNT/test/test.ext2 bs=1024 count=10240 >> $seqres.fu
|| _fail "!!! create file failed"
_log "Create ext2 fs in file on looped xfs"
-echo y | mkfs -t ext2 $SCRATCH_MNT/test/test.ext2 >> $seqres.full 2>&1 \
+loop_dev2=$(_create_loop_device $SCRATCH_MNT/test/test.ext2)
+echo y | mkfs -t ext2 $loop_dev2 >> $seqres.full 2>&1 \
|| _fail "!!! failed to mkfs ext2 on xfs"
_log "Mount ext2 on xfs via loop"
-mount -t ext2 -o loop $SCRATCH_MNT/test/test.ext2 $SCRATCH_MNT/test2 >> $seqres.full 2>&1 \
+_mount $loop_dev2 $SCRATCH_MNT/test2 >> $seqres.full 2>&1 \
|| _fail "!!! failed to loop mount xfs"
_log "stress ext2 on xfs via loop"
@@ -96,12 +99,16 @@ rm -rf $SCRATCH_MNT/test/* >> $seqres.full 2>&1 \
|| _fail "!!! clean failed"
_log "umount ext2 on xfs"
-umount $SCRATCH_MNT/test2 >> $seqres.full 2>&1 \
+_unmount $SCRATCH_MNT/test2 >> $seqres.full 2>&1 \
|| _fail "!!! umount ext2 failed"
+_destroy_loop_device $loop_dev2
+unset loop_dev2
_log "umount xfs"
-umount $SCRATCH_MNT/test >> $seqres.full 2>&1 \
+_unmount $SCRATCH_MNT/test >> $seqres.full 2>&1 \
|| _fail "!!! umount xfs failed"
+_destroy_loop_device $loop_dev1
+unset loop_dev1
echo "--- mounts at end (before cleanup)" >> $seqres.full
mount >> $seqres.full
diff --git a/tests/xfs/073 b/tests/xfs/073
index e4b17c5e7..2274079ef 100755
--- a/tests/xfs/073
+++ b/tests/xfs/073
@@ -23,6 +23,8 @@ _cleanup()
_scratch_unmount 2>/dev/null
_unmount $imgs.loop 2>/dev/null
_unmount $imgs.source_dir 2>/dev/null
+ [ -n "$loop_dev1" ] && _destroy_loop_device $loop_dev1
+ [ -n "$loop_dev2" ] && _destroy_loop_device $loop_dev2
[ -d $imgs.loop ] && rmdir $imgs.loop
[ -d $imgs.source_dir ] && rm -rf $imgs.source_dir
rm -f $imgs.* $tmp.* /var/tmp/xfs_copy.log.*
@@ -65,10 +67,11 @@ _verify_copy()
rmdir $target_dir 2>/dev/null
mkdir $target_dir
- _mount -t xfs -o loop $target $target_dir 2>/dev/null
+ loop_dev1=$(_create_loop_device $target)
+ _mount $loop_dev1 $target_dir 2>/dev/null
if [ $? -ne 0 ]; then
echo retrying mount with nouuid option >>$seqres.full
- _mount -t xfs -o loop -o nouuid $target $target_dir
+ _mount -o nouuid $loop_dev1 $target_dir
if [ $? -ne 0 ]; then
echo mount failed - evil!
return
@@ -100,6 +103,8 @@ _verify_copy()
echo unmounting and removing new image
_unmount $source_dir
_unmount $target_dir > /dev/null 2>&1
+ _destroy_loop_device $loop_dev1
+ unset loop_dev1
rm -f $target
}
@@ -134,18 +139,15 @@ ${MKFS_XFS_PROG} -dfile,name=$imgs.source,size=100g \
rmdir $imgs.source_dir 2>/dev/null
mkdir $imgs.source_dir
-_mount -t xfs -o loop $imgs.source $imgs.source_dir
-loop2=`mount | grep $imgs.source | grep -o -e 'loop=.*[^),]' | grep -o -e '/.*$'`
+loop_dev2=$(_create_loop_device $imgs.source)
+_mount $loop_dev2 $imgs.source_dir
cp -a $here $imgs.source_dir
-_mount -t xfs -o remount,ro $imgs.source $imgs.source_dir
-$XFS_COPY_PROG $imgs.source $imgs.image | _filter_copy '#' $imgs.image '#' '#'
+_mount -o remount,ro $loop_dev2 $imgs.source_dir
+$XFS_COPY_PROG $loop_dev2 $imgs.image 2> /dev/null | _filter_copy '#' $imgs.image '#' '#'
_verify_copy $imgs.image $imgs.source $imgs.source_dir
-# HACK WARNING:
-#
-# We're done with the nested loop mount, now we have to clean
-# up the pieces that mount is incapable of doing.
-losetup -d $loop2 > /dev/null 2>&1
+_destroy_loop_device $loop_dev2
+unset loop_dev2
echo
echo === copying scratch device to multiple targets
diff --git a/tests/xfs/074 b/tests/xfs/074
index 6a03c8111..5df864fad 100755
--- a/tests/xfs/074
+++ b/tests/xfs/074
@@ -26,7 +26,7 @@ _begin_fstest quick auto prealloc rw
_cleanup()
{
cd /
- _destroy_loop_device $LOOP_DEV
+ [ -n "$loop_dev" ] &&_destroy_loop_device $loop_dev
rm -f $tmp.* $LOOP_FILE
}
@@ -45,10 +45,10 @@ LOOP_FILE=$TEST_DIR/$seq.img
LOOP_MNT=$TEST_DIR/$seq.mnt
mkdir -p $LOOP_MNT
$XFS_IO_PROG -ft -c "truncate 1t" $LOOP_FILE >> $seqres.full
-LOOP_DEV=`_create_loop_device $LOOP_FILE`
+loop_dev=`_create_loop_device $LOOP_FILE`
-_mkfs_dev -d size=260g,agcount=2 $LOOP_DEV
-_mount $LOOP_DEV $LOOP_MNT
+_mkfs_dev -d size=260g,agcount=2 $loop_dev
+_mount $loop_dev $LOOP_MNT
BLOCK_SIZE=$(_get_file_block_size $LOOP_MNT)
@@ -59,11 +59,11 @@ $XFS_IO_PROG -ft \
-c "falloc 0 $(($BLOCK_SIZE * 2097152))" \
$LOOP_MNT/foo >> $seqres.full
-umount $LOOP_MNT
-_check_xfs_filesystem $LOOP_DEV none none
+_unmount $LOOP_MNT
+_check_xfs_filesystem $loop_dev none none
-_mkfs_dev -f $LOOP_DEV
-_mount $LOOP_DEV $LOOP_MNT
+_mkfs_dev -f $loop_dev
+_mount $loop_dev $LOOP_MNT
# check we trim both ends of the extent approproiately; this will fail
# on 1k block size filesystems without the correct fixes in place.
@@ -73,7 +73,10 @@ $XFS_IO_PROG -ft \
$LOOP_MNT/foo >> $seqres.full
_unmount $LOOP_MNT
-_check_xfs_filesystem $LOOP_DEV none none
+_check_xfs_filesystem $loop_dev none none
+
+_destroy_loop_device $loop_dev
+unset loop_dev
# success, all done
echo "Silence is golden"
diff --git a/tests/xfs/078 b/tests/xfs/078
index 6b325e05f..0d3c2eb23 100755
--- a/tests/xfs/078
+++ b/tests/xfs/078
@@ -17,7 +17,7 @@ _cleanup()
cd /
rm -f $tmp.*
_unmount $LOOP_MNT 2>/dev/null
- [ -n "$LOOP_DEV" ] && _destroy_loop_device $LOOP_DEV 2>/dev/null
+ [ -n "$loop_dev" ] && _destroy_loop_device $loop_dev 2>/dev/null
# try to keep the image file if test fails
[ $status -eq 0 ] && rm -f $LOOP_IMG
rmdir $LOOP_MNT
@@ -55,7 +55,7 @@ _grow_loop()
agsize=$5
$XFS_IO_PROG -f -c "truncate $original" $LOOP_IMG
- LOOP_DEV=`_create_loop_device $LOOP_IMG`
+ loop_dev=`_create_loop_device $LOOP_IMG`
dparam=""
if [ -n "$agsize" ]; then
@@ -67,15 +67,15 @@ _grow_loop()
echo
echo "*** mkfs loop file (size=$original)"
- $MKFS_XFS_PROG -b size=$bsize $dparam $LOOP_DEV | \
+ $MKFS_XFS_PROG -b size=$bsize $dparam $loop_dev | \
_filter_mkfs 2>/dev/null
echo "*** extend loop file"
- _destroy_loop_device $LOOP_DEV
+ _destroy_loop_device $loop_dev
$XFS_IO_PROG -c "pwrite $new_size $bsize" $LOOP_IMG | _filter_io
- LOOP_DEV=`_create_loop_device $LOOP_IMG`
+ loop_dev=`_create_loop_device $LOOP_IMG`
echo "*** mount loop filesystem"
- _mount -t xfs $LOOP_DEV $LOOP_MNT
+ _mount $loop_dev $LOOP_MNT
echo "*** grow loop filesystem"
$XFS_GROWFS_PROG $LOOP_MNT 2>&1 | _filter_growfs 2>&1
@@ -87,9 +87,11 @@ _grow_loop()
if [ "$check" -gt "0" ]
then
echo "*** check"
- _check_xfs_filesystem $LOOP_IMG none none
+ _check_xfs_filesystem $loop_dev none none
fi
+ _destroy_loop_device $loop_dev
+ unset loop_dev
rm -f $LOOP_IMG
}
diff --git a/tests/xfs/148 b/tests/xfs/148
index c42c9b119..4d2f7a808 100755
--- a/tests/xfs/148
+++ b/tests/xfs/148
@@ -15,7 +15,7 @@ _cleanup()
{
cd /
_unmount $mntpt > /dev/null 2>&1
- _destroy_loop_device $loopdev > /dev/null 2>&1
+ [ -n "$loop_dev" ] && _destroy_loop_device $loop_dev
rm -r -f $tmp.*
}
@@ -48,12 +48,12 @@ rm -f $imgfile $imgfile.old
# even when security xattrs are present so we are always doing name matches on
# lookup and not name hash compares as leaf/node forms will do.
$XFS_IO_PROG -f -c 'truncate 40m' $imgfile
-loopdev=$(_create_loop_device $imgfile)
-MKFS_OPTIONS="-m crc=0 -i size=512" _mkfs_dev $loopdev >> $seqres.full
+loop_dev=$(_create_loop_device $imgfile)
+MKFS_OPTIONS="-m crc=0 -i size=512" _mkfs_dev $loop_dev >> $seqres.full
# Mount image file
mkdir -p $mntpt
-_mount $loopdev $mntpt
+_mount $loop_dev $mntpt
echo "creating entries" >> $seqres.full
@@ -91,7 +91,8 @@ cat $tmp.log | _filter_test_dir
# Corrupt the entries
_unmount $mntpt
-_destroy_loop_device $loopdev
+_destroy_loop_device $loop_dev
+unset loop_dev
cp $imgfile $imgfile.old
sed -b \
-e "s/$nullstr/too_many\x00beans/g" \
@@ -99,8 +100,9 @@ sed -b \
-i $imgfile
test "$(md5sum < $imgfile)" != "$(md5sum < $imgfile.old)" ||
_fail "sed failed to change the image file?"
-loopdev=$(_create_loop_device $imgfile)
-_mount $loopdev $mntpt
+
+loop_dev=$(_create_loop_device $imgfile)
+_mount $loop_dev $mntpt
# Try to access the corrupt metadata
echo "++ ACCESSING BAD METADATA" | tee -a $seqres.full
@@ -111,7 +113,7 @@ cat $tmp.log | _filter_test_dir | sed -e '/Could not list/d'
echo "does scrub complain?" >> $seqres.full
# Does scrub complain about this?
-if _supports_xfs_scrub $mntpt $loopdev; then
+if _supports_xfs_scrub $mntpt $loop_dev; then
$XFS_SCRUB_PROG -n $mntpt >> $seqres.full 2>&1
res=$?
test $((res & 1)) -eq 0 && \
@@ -122,11 +124,14 @@ echo "does repair complain?" >> $seqres.full
# Does repair complain about this?
_unmount $mntpt
-$XFS_REPAIR_PROG -n $loopdev >> $seqres.full 2>&1
+$XFS_REPAIR_PROG -n $loop_dev >> $seqres.full 2>&1
res=$?
test $res -eq 1 || \
echo "repair failed to report corruption ($res)"
+_destroy_loop_device $loop_dev
+unset loop_dev
+
# success, all done
status=0
exit
diff --git a/tests/xfs/149 b/tests/xfs/149
index f2187109b..9a96f82ed 100755
--- a/tests/xfs/149
+++ b/tests/xfs/149
@@ -84,6 +84,10 @@ $XFS_GROWFS_PROG -D 16384 $loop_symlink > /dev/null
echo "=== xfs_growfs - check device node ==="
$XFS_GROWFS_PROG -D 20480 $loop_dev > /dev/null
+_unmount $mntdir
+_destroy_loop_device $loop_dev
+unset loop_dev
+
# success, all done
status=0
exit
diff --git a/tests/xfs/216 b/tests/xfs/216
index 6b8b2eb22..091c11d08 100755
--- a/tests/xfs/216
+++ b/tests/xfs/216
@@ -15,6 +15,7 @@ _begin_fstest log metadata auto quick
_cleanup()
{
_unmount $LOOP_MNT > /dev/null 2>&1
+ [ -n "$loop_dev" ] && _destroy_loop_device $loop_dev
cd /
rm -f $tmp.*
}
@@ -24,7 +25,7 @@ _scratch_mkfs_xfs >/dev/null 2>&1
_scratch_mount
_require_loop
-LOOP_DEV=$SCRATCH_MNT/test_fs
+LOOP_IMG=$SCRATCH_MNT/test_fs
LOOP_MNT=$SCRATCH_MNT/test_fs_dir
loop_mkfs_opts=
@@ -55,22 +56,26 @@ _do_mkfs()
for i in $*; do
echo -n "fssize=${i}g "
$MKFS_XFS_PROG -f -b size=4096 -l version=2 \
- -d name=$LOOP_DEV,size=${i}g $loop_mkfs_opts |grep log
- _mount -o loop -t xfs $LOOP_DEV $LOOP_MNT
+ -d size=${i}g $loop_mkfs_opts $loop_dev |grep log
+ _mount $loop_dev $LOOP_MNT
echo "test write" > $LOOP_MNT/test
_unmount $LOOP_MNT > /dev/null 2>&1
done
}
# make large holey file
-$XFS_IO_PROG -f -c "truncate 256g" $LOOP_DEV
+$XFS_IO_PROG -f -c "truncate 256g" $LOOP_IMG
-choose_golden_output $0 $LOOP_DEV
+choose_golden_output $0 $LOOP_IMG
#make loopback mount dir
mkdir $LOOP_MNT
+loop_dev=$(_create_loop_device $LOOP_IMG)
+
# walk over standard sizes (up to 256GB)
_do_mkfs 1 2 4 8 16 32 64 128 256
+_destroy_loop_device $loop_dev
+unset loop_dev
status=0
exit
diff --git a/tests/xfs/217 b/tests/xfs/217
index b2eb34490..dae6ce55f 100755
--- a/tests/xfs/217
+++ b/tests/xfs/217
@@ -12,6 +12,12 @@ _begin_fstest log metadata auto
# Import common functions.
. ./common/filter
+_cleanup()
+{
+ [ -n "$loop_dev" ] && _destroy_loop_device $loop_dev
+ cd /
+ rm -f $tmp.*
+}
_require_scratch
_scratch_mkfs_xfs >/dev/null 2>&1
@@ -20,7 +26,7 @@ _scratch_mount
_require_fs_space $SCRATCH_MNT 2202000
_require_loop
-LOOP_DEV=$SCRATCH_MNT/test_fs
+LOOP_IMG=$SCRATCH_MNT/test_fs
LOOP_MNT=$SCRATCH_MNT/test_fs_dir
_do_mkfs()
@@ -28,28 +34,30 @@ _do_mkfs()
for i in $*; do
echo -n "fssize=${i}g "
$MKFS_XFS_PROG -f -b size=4096 -l version=2 \
- -d name=$LOOP_DEV,size=${i}g |grep log
- _mount -o loop -t xfs $LOOP_DEV $LOOP_MNT
+ -d size=${i}g $loop_dev |grep log
+ _mount $loop_dev $LOOP_MNT
echo "test write" > $LOOP_MNT/test
_unmount $LOOP_MNT > /dev/null 2>&1
# punch out the previous blocks so that we keep the amount of
# disk space the test requires down to a minimum.
- $XFS_IO_PROG -f -c "unresvsp 0 16383g" $LOOP_DEV
+ $XFS_IO_PROG -f -c "unresvsp 0 16383g" $LOOP_IMG
done
}
# make large holey file
-$XFS_IO_PROG -f -c "truncate 16383g" $LOOP_DEV
+$XFS_IO_PROG -f -c "truncate 16383g" $LOOP_IMG
#make loopback mount dir
mkdir $LOOP_MNT
# test if large logs are supported
-$MKFS_XFS_PROG -f -l size=256m -d name=$LOOP_DEV,size=10g > /dev/null 2>&1
+$MKFS_XFS_PROG -f -l size=256m -d name=$LOOP_IMG,size=10g > /dev/null 2>&1
if [ $? -ne 0 ]; then
_notrun "large log sizes not supported by mkfs"
fi
+loop_dev=$(_create_loop_device $LOOP_IMG)
+
#
# walk over "new" sizes supported by recent xfsprogs.
# Note that the last test is for 16TB-1GB as 32bit platforms only support
@@ -57,5 +65,7 @@ fi
#
_do_mkfs 512 1024 2048 4096 8192 16383
+_destroy_loop_device $loop_dev
+unset loop_dev
status=0
exit
diff --git a/tests/xfs/250 b/tests/xfs/250
index 4e3473ebc..2554e1e91 100755
--- a/tests/xfs/250
+++ b/tests/xfs/250
@@ -14,7 +14,8 @@ _cleanup()
{
cd /
_unmount $LOOP_MNT 2>/dev/null
- rm -f $LOOP_DEV
+ [ -n "$loop_dev" ] && _destroy_loop_device $loop_dev
+ rm -f $LOOP_IMG
rmdir $LOOP_MNT
rm -f $tmp.*
}
@@ -26,7 +27,7 @@ _require_test
_require_loop
_require_xfs_io_command "falloc"
-LOOP_DEV=$TEST_DIR/$seq.fs
+LOOP_IMG=$TEST_DIR/$seq.fs
LOOP_MNT=$TEST_DIR/$seq.mnt
_filter_io()
@@ -45,7 +46,7 @@ _test_loop()
agsize=$2
fsize=$3
- dparam="file,name=$LOOP_DEV,size=$size"
+ dparam="file,name=$LOOP_IMG,size=$size"
if [ -n "$agsize" ]; then
dparam="$dparam,agsize=$agsize"
fi
@@ -55,7 +56,8 @@ _test_loop()
| _filter_mkfs 2>/dev/null
echo "*** mount loop filesystem"
- _mount -t xfs -o loop $LOOP_DEV $LOOP_MNT
+ loop_dev=$(_create_loop_device $LOOP_IMG)
+ mount $loop_dev $LOOP_MNT
echo "*** preallocate large file"
$XFS_IO_PROG -f -c "resvsp 0 $fsize" $LOOP_MNT/foo | _filter_io
@@ -64,7 +66,9 @@ _test_loop()
_unmount $LOOP_MNT > /dev/null 2>&1
echo "*** check loop filesystem"
- _check_xfs_filesystem $LOOP_DEV none none
+ _check_xfs_filesystem $loop_dev none none
+ _destroy_loop_device $loop_dev
+ unset loop_dev
}
_test_loop 50g 16m 40G
diff --git a/tests/xfs/259 b/tests/xfs/259
index 0c8d6eb56..c2d26381a 100755
--- a/tests/xfs/259
+++ b/tests/xfs/259
@@ -12,7 +12,10 @@ _begin_fstest auto quick
# Override the default cleanup function.
_cleanup()
{
- rm -f "$testfile"
+ [ -n "$loop_dev" ] && _destroy_loop_device $testfile
+ rm -f "$testfile"
+ cd /
+ rm -f $tmp.*
}
# Import common functions.
@@ -45,13 +48,13 @@ for del in $sizes_to_check; do
rm -f "$testfile"
dd if=/dev/zero "of=$testfile" bs=1 count=0 seek=$ddseek \
>/dev/null 2>&1 || echo "dd failed"
- lofile=$(losetup -f)
- losetup $lofile "$testfile"
- $MKFS_XFS_PROG -l size=32m -b size=$bs $lofile | _filter_mkfs \
+ loop_dev=$(_create_loop_device $testfile)
+ $MKFS_XFS_PROG -l size=32m -b size=$bs $loop_dev | _filter_mkfs \
>/dev/null 2> $tmp.mkfs || echo "mkfs failed!"
. $tmp.mkfs
sync
- losetup -d $lofile
+ _destroy_loop_device $loop_dev
+ unset loop_dev
done
done
diff --git a/tests/xfs/513 b/tests/xfs/513
index 5895e6e2d..0c0edc75e 100755
--- a/tests/xfs/513
+++ b/tests/xfs/513
@@ -15,12 +15,8 @@ _cleanup()
cd /
rm -f $tmp.*
_unmount $LOOP_MNT 2>/dev/null
- if [ -n "$LOOP_DEV" ];then
- _destroy_loop_device $LOOP_DEV 2>/dev/null
- fi
- if [ -n "$LOOP_SPARE_DEV" ];then
- _destroy_loop_device $LOOP_SPARE_DEV 2>/dev/null
- fi
+ [ -n $loop_dev ] &&_destroy_loop_device $loop_dev
+ [ -n $loop_spare_dev ] &&_destroy_loop_device $loop_spare_dev
rm -f $LOOP_IMG
rm -f $LOOP_SPARE_IMG
rmdir $LOOP_MNT
@@ -42,11 +38,11 @@ LOOP_MNT=$TEST_DIR/$seq.mnt
echo "** create loop device"
$XFS_IO_PROG -f -c "truncate 32g" $LOOP_IMG
-LOOP_DEV=`_create_loop_device $LOOP_IMG`
+loop_dev=`_create_loop_device $LOOP_IMG`
echo "** create loop log device"
$XFS_IO_PROG -f -c "truncate 1g" $LOOP_SPARE_IMG
-LOOP_SPARE_DEV=`_create_loop_device $LOOP_SPARE_IMG`
+loop_spare_dev=`_create_loop_device $LOOP_SPARE_IMG`
echo "** create loop mount point"
rmdir $LOOP_MNT 2>/dev/null
@@ -55,8 +51,8 @@ mkdir -p $LOOP_MNT || _fail "cannot create loopback mount point"
filter_loop()
{
sed -e "s,\B$LOOP_MNT,LOOP_MNT,g" \
- -e "s,\B$LOOP_DEV,LOOP_DEV,g" \
- -e "s,\B$LOOP_SPARE_DEV,LOOP_SPARE_DEV,g"
+ -e "s,\B$loop_dev,LOOP_DEV,g" \
+ -e "s,\B$loop_spare_dev,LOOP_SPARE_DEV,g"
}
filter_xfs_opt()
@@ -69,22 +65,22 @@ MKFS_OPTIONS=""
do_mkfs()
{
echo "FORMAT: $@" | filter_loop | tee -a $seqres.full
- $MKFS_XFS_PROG -f $* $LOOP_DEV | _filter_mkfs >>$seqres.full 2>$tmp.mkfs
+ $MKFS_XFS_PROG -f $* $loop_dev | _filter_mkfs >>$seqres.full 2>$tmp.mkfs
if [ "${PIPESTATUS[0]}" -ne 0 ]; then
- _fail "Fails on _mkfs_dev $* $LOOP_DEV"
+ _fail "Fails on _mkfs_dev $* $loop_dev"
fi
. $tmp.mkfs
}
is_dev_mounted()
{
- findmnt --source $LOOP_DEV >/dev/null
+ findmnt --source $loop_dev >/dev/null
return $?
}
get_mount_info()
{
- findmnt --source $LOOP_DEV -o OPTIONS -n
+ findmnt --source $loop_dev -o OPTIONS -n
}
force_unmount()
@@ -103,29 +99,29 @@ _do_test()
local info
# mount test
- _mount $LOOP_DEV $LOOP_MNT $opts 2>>$seqres.full
+ _mount $loop_dev $LOOP_MNT $opts 2>>$seqres.full
rc=$?
if [ $rc -eq 0 ];then
if [ "${mounted}" = "fail" ];then
- echo "[FAILED]: mount $LOOP_DEV $LOOP_MNT $opts"
+ echo "[FAILED]: mount $loop_dev $LOOP_MNT $opts"
echo "ERROR: expect mount to fail, but it succeeded"
return 1
fi
is_dev_mounted
if [ $? -ne 0 ];then
- echo "[FAILED]: mount $LOOP_DEV $LOOP_MNT $opts"
+ echo "[FAILED]: mount $loop_dev $LOOP_MNT $opts"
echo "ERROR: fs not mounted even mount return 0"
return 1
fi
else
if [ "${mounted}" = "pass" ];then
- echo "[FAILED]: mount $LOOP_DEV $LOOP_MNT $opts"
+ echo "[FAILED]: mount $loop_dev $LOOP_MNT $opts"
echo "ERROR: expect mount to succeed, but it failed"
return 1
fi
is_dev_mounted
if [ $? -eq 0 ];then
- echo "[FAILED]: mount $LOOP_DEV $LOOP_MNT $opts"
+ echo "[FAILED]: mount $loop_dev $LOOP_MNT $opts"
echo "ERROR: fs is mounted even mount return non-zero"
return 1
fi
@@ -141,13 +137,13 @@ _do_test()
rc=$?
if [ $rc -eq 0 ];then
if [ "$found" != "true" ];then
- echo "[FAILED]: mount $LOOP_DEV $LOOP_MNT $opts"
+ echo "[FAILED]: mount $loop_dev $LOOP_MNT $opts"
echo "ERROR: expected to find \"$key\" in mount info \"$info\""
return 1
fi
else
if [ "$found" != "false" ];then
- echo "[FAILED]: mount $LOOP_DEV $LOOP_MNT $opts"
+ echo "[FAILED]: mount $loop_dev $LOOP_MNT $opts"
echo "ERROR: did not expect to find \"$key\" in \"$info\""
return 1
fi
@@ -253,9 +249,9 @@ do_test "-o logbsize=512k" fail
# Test logdev
do_mkfs
do_test "" pass "logdev" "false"
-do_test "-o logdev=$LOOP_SPARE_DEV" fail
-do_mkfs -l logdev=$LOOP_SPARE_DEV
-do_test "-o logdev=$LOOP_SPARE_DEV" pass "logdev=$LOOP_SPARE_DEV" "true"
+do_test "-o logdev=$loop_spare_dev" fail
+do_mkfs -l logdev=$loop_spare_dev
+do_test "-o logdev=$loop_spare_dev" pass "logdev=$loop_spare_dev" "true"
do_test "" fail
# Test noalign
diff --git a/tests/xfs/521 b/tests/xfs/521
index 13982c440..c92c621a2 100755
--- a/tests/xfs/521
+++ b/tests/xfs/521
@@ -21,7 +21,7 @@ _cleanup()
{
cd /
_scratch_unmount >> $seqres.full 2>&1
- test -e "$rtdev" && losetup -d $rtdev >> $seqres.full 2>&1
+ [ -n "$rt_loop_dev" ] && _destroy_loop_device $rt_loop_dev
rm -f $tmp.* $TEST_DIR/$seq.rtvol
}
@@ -35,7 +35,7 @@ _require_no_large_scratch_dev
echo "Create fake rt volume"
truncate -s 400m $TEST_DIR/$seq.rtvol
-rtdev=$(_create_loop_device $TEST_DIR/$seq.rtvol)
+rt_loop_dev=$(_create_loop_device $TEST_DIR/$seq.rtvol)
echo "Format and mount 100m rt volume"
export USE_EXTERNAL=yes
@@ -69,6 +69,10 @@ cp -p $testdir/original $testdir/copy3
echo "Check filesystem"
_check_scratch_fs
+_scratch_unmount
+_destroy_loop_device $rt_loop_dev
+unset rt_loop_dev
+
# success, all done
status=0
exit
diff --git a/tests/xfs/528 b/tests/xfs/528
index 6ca9a2370..a1efbbd27 100755
--- a/tests/xfs/528
+++ b/tests/xfs/528
@@ -15,7 +15,7 @@ _cleanup()
{
cd /
_scratch_unmount >> $seqres.full 2>&1
- test -e "$rtdev" && losetup -d $rtdev >> $seqres.full 2>&1
+ [ -n "$rt_loop_dev" ] && _destroy_loop_device $rt_loop_dev
rm -f $tmp.* $TEST_DIR/$seq.rtvol
}
@@ -155,11 +155,11 @@ test_ops() {
echo "Create fake rt volume"
$XFS_IO_PROG -f -c "truncate 400m" $TEST_DIR/$seq.rtvol
-rtdev=$(_create_loop_device $TEST_DIR/$seq.rtvol)
+rt_loop_dev=$(_create_loop_device $TEST_DIR/$seq.rtvol)
echo "Make sure synth rt volume works"
export USE_EXTERNAL=yes
-export SCRATCH_RTDEV=$rtdev
+export SCRATCH_RTDEV=$rt_loop_dev
_scratch_mkfs > $seqres.full
_try_scratch_mount || \
_notrun "Could not mount with synthetic rt volume"
@@ -170,6 +170,10 @@ test_ops 262144
# not a power of two
test_ops 327680
+_scratch_unmount
+_destroy_loop_device $rt_loop_dev
+unset rt_loop_dev
+
# success, all done
status=0
exit
diff --git a/tests/xfs/530 b/tests/xfs/530
index 8a182bd6a..d0d0e2665 100755
--- a/tests/xfs/530
+++ b/tests/xfs/530
@@ -15,7 +15,7 @@ _cleanup()
{
cd /
_scratch_unmount >> $seqres.full 2>&1
- test -e "$rtdev" && losetup -d $rtdev >> $seqres.full 2>&1
+ [ -n "$rt_loop_dev" ] && _destroy_loop_device $rt_loop_dev
rm -f $tmp.* $TEST_DIR/$seq.rtvol
}
@@ -52,12 +52,12 @@ fi
rtdevsz=$((nr_bits * rtextsz))
truncate -s $rtdevsz $TEST_DIR/$seq.rtvol
-rtdev=$(_create_loop_device $TEST_DIR/$seq.rtvol)
+rt_loop_dev=$(_create_loop_device $TEST_DIR/$seq.rtvol)
echo "Format and mount rt volume"
export USE_EXTERNAL=yes
-export SCRATCH_RTDEV=$rtdev
+export SCRATCH_RTDEV=$rt_loop_dev
_scratch_mkfs -d size=$((1024 * 1024 * 1024)) \
-r size=${rtextsz},extsize=${rtextsz} >> $seqres.full
_try_scratch_mount || _notrun "Couldn't mount fs with synthetic rt volume"
@@ -116,8 +116,9 @@ done
echo "Check filesystem"
_check_scratch_fs
-losetup -d $rtdev
-rm -f $TEST_DIR/$seq.rtvol
+_scratch_unmount
+_destroy_loop_device $rt_loop_dev
+unset rt_loop_dev
# success, all done
status=0
diff --git a/tests/xfs/606 b/tests/xfs/606
index f958bddd8..b537ea145 100755
--- a/tests/xfs/606
+++ b/tests/xfs/606
@@ -13,10 +13,8 @@ _begin_fstest auto quick growfs
_cleanup()
{
- local dev
_unmount $LOOP_MNT 2>/dev/null
- dev=$(losetup -j testfile | cut -d: -f1)
- losetup -d $dev 2>/dev/null
+ [ -n "$loop_dev" ] && _destroy_loop_device $loop_dev
rm -rf $LOOP_IMG $LOOP_MNT
cd /
rm -f $tmp.*
@@ -40,7 +38,9 @@ $MKFS_XFS_PROG -f $LOOP_IMG >$seqres.full
# Extend by just 8K, expected to start with the last full-size AG ends of
# above 1G block device.
$XFS_IO_PROG -f -c "truncate 1073750016" $LOOP_IMG
-_mount -oloop $LOOP_IMG $LOOP_MNT
+
+loop_dev=$(_create_loop_device $LOOP_IMG)
+_mount $loop_dev $LOOP_MNT
# A known bug shows "XFS_IOC_FSGROWFSDATA xfsctl failed: No space left on
# device" at here, refer to _fixed_by_kernel_commit above
$XFS_GROWFS_PROG $LOOP_MNT >$seqres.full
@@ -48,6 +48,10 @@ if [ $? -ne 0 ];then
echo "xfs_growfs fails!"
fi
+_unmount $LOOP_MNT
+_destroy_loop_device $loop_dev
+unset loop_dev
+
echo "Silence is golden"
# success, all done
status=0
diff --git a/tests/xfs/613 b/tests/xfs/613
index 6ba3d87bf..b87cae91e 100755
--- a/tests/xfs/613
+++ b/tests/xfs/613
@@ -15,14 +15,8 @@ _cleanup()
cd /
rm -f $tmp.*
_unmount $LOOP_MNT 2>/dev/null
- if [ -n "$LOOP_DEV" ];then
- _destroy_loop_device $LOOP_DEV 2>/dev/null
- fi
- if [ -n "$LOOP_SPARE_DEV" ];then
- _destroy_loop_device $LOOP_SPARE_DEV 2>/dev/null
- fi
+ [ -n $loop_dev ] &&_destroy_loop_device $loop_dev
rm -f $LOOP_IMG
- rm -f $LOOP_SPARE_IMG
rmdir $LOOP_MNT
}
@@ -38,16 +32,11 @@ _require_loop
_require_xfs_io_command "falloc"
LOOP_IMG=$TEST_DIR/$seq.dev
-LOOP_SPARE_IMG=$TEST_DIR/$seq.logdev
LOOP_MNT=$TEST_DIR/$seq.mnt
echo "** create loop device"
$XFS_IO_PROG -f -c "truncate 32g" $LOOP_IMG
-LOOP_DEV=`_create_loop_device $LOOP_IMG`
-
-echo "** create loop log device"
-$XFS_IO_PROG -f -c "truncate 1g" $LOOP_SPARE_IMG
-LOOP_SPARE_DEV=`_create_loop_device $LOOP_SPARE_IMG`
+loop_dev=`_create_loop_device $LOOP_IMG`
echo "** create loop mount point"
rmdir $LOOP_MNT 2>/dev/null
@@ -56,8 +45,7 @@ mkdir -p $LOOP_MNT || _fail "cannot create loopback mount point"
filter_loop()
{
sed -e "s,\B$LOOP_MNT,LOOP_MNT,g" \
- -e "s,\B$LOOP_DEV,LOOP_DEV,g" \
- -e "s,\B$LOOP_SPARE_DEV,LOOP_SPARE_DEV,g"
+ -e "s,\B$loop_dev,LOOP_DEV,g"
}
filter_xfs_opt()
@@ -70,22 +58,22 @@ MKFS_OPTIONS=""
do_mkfs()
{
echo "FORMAT: $@" | filter_loop | tee -a $seqres.full
- $MKFS_XFS_PROG -f $* $LOOP_DEV | _filter_mkfs >>$seqres.full 2>$tmp.mkfs
+ $MKFS_XFS_PROG -f $* $loop_dev | _filter_mkfs >>$seqres.full 2>$tmp.mkfs
if [ "${PIPESTATUS[0]}" -ne 0 ]; then
- _fail "Fails on _mkfs_dev $* $LOOP_DEV"
+ _fail "Fails on _mkfs_dev $* $loop_dev"
fi
. $tmp.mkfs
}
is_dev_mounted()
{
- findmnt --source $LOOP_DEV >/dev/null
+ findmnt --source $loop_dev >/dev/null
return $?
}
get_mount_info()
{
- findmnt --source $LOOP_DEV -o OPTIONS -n
+ findmnt --source $loop_dev -o OPTIONS -n
}
force_unmount()
@@ -104,29 +92,29 @@ _do_test()
local info
# mount test
- _mount $LOOP_DEV $LOOP_MNT $opts 2>>$seqres.full
+ _mount $loop_dev $LOOP_MNT $opts 2>>$seqres.full
rc=$?
if [ $rc -eq 0 ];then
if [ "${mounted}" = "fail" ];then
- echo "[FAILED]: mount $LOOP_DEV $LOOP_MNT $opts"
+ echo "[FAILED]: mount $loop_dev $LOOP_MNT $opts"
echo "ERROR: expect mount to fail, but it succeeded"
return 1
fi
is_dev_mounted
if [ $? -ne 0 ];then
- echo "[FAILED]: mount $LOOP_DEV $LOOP_MNT $opts"
+ echo "[FAILED]: mount $loop_dev $LOOP_MNT $opts"
echo "ERROR: fs not mounted even mount return 0"
return 1
fi
else
if [ "${mounted}" = "pass" ];then
- echo "[FAILED]: mount $LOOP_DEV $LOOP_MNT $opts"
+ echo "[FAILED]: mount $loop_dev $LOOP_MNT $opts"
echo "ERROR: expect mount to succeed, but it failed"
return 1
fi
is_dev_mounted
if [ $? -eq 0 ];then
- echo "[FAILED]: mount $LOOP_DEV $LOOP_MNT $opts"
+ echo "[FAILED]: mount $loop_dev $LOOP_MNT $opts"
echo "ERROR: fs is mounted even mount return non-zero"
return 1
fi
@@ -142,13 +130,13 @@ _do_test()
rc=$?
if [ $rc -eq 0 ];then
if [ "$found" != "true" ];then
- echo "[FAILED]: mount $LOOP_DEV $LOOP_MNT $opts"
+ echo "[FAILED]: mount $loop_dev $LOOP_MNT $opts"
echo "ERROR: expected to find \"$key\" in mount info \"$info\""
return 1
fi
else
if [ "$found" != "false" ];then
- echo "[FAILED]: mount $LOOP_DEV $LOOP_MNT $opts"
+ echo "[FAILED]: mount $loop_dev $LOOP_MNT $opts"
echo "ERROR: did not expect to find \"$key\" in \"$info\""
return 1
fi
diff --git a/tests/xfs/613.out b/tests/xfs/613.out
index 1624617ee..2a693c53c 100644
--- a/tests/xfs/613.out
+++ b/tests/xfs/613.out
@@ -1,6 +1,5 @@
QA output created by 613
** create loop device
-** create loop log device
** create loop mount point
** start xfs mount testing ...
FORMAT: -m crc=0
--
2.45.2
next prev parent reply other threads:[~2024-11-27 4:54 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-27 4:51 [RFC PATCH 00/40] fstests: concurrent test execution Dave Chinner
2024-11-27 4:51 ` [PATCH 01/40] xfs/448: get rid of assert-on-failure Dave Chinner
2024-11-27 4:51 ` [PATCH 02/40] fstests: cleanup fsstress process management Dave Chinner
2024-11-29 4:03 ` Zorro Lang
2024-12-04 17:57 ` Zorro Lang
2024-12-05 4:42 ` Dave Chinner
2024-12-05 9:57 ` Zorro Lang
2024-12-04 18:04 ` Zorro Lang
2024-12-05 4:55 ` Dave Chinner
2024-12-05 10:05 ` Zorro Lang
2024-11-27 4:51 ` [PATCH 03/40] fuzzy: don't use killall Dave Chinner
2024-11-27 4:51 ` [PATCH 04/40] fstests: per-test dmflakey instances Dave Chinner
2024-11-27 4:51 ` [PATCH 05/40] fstests: per-test dmerror instances Dave Chinner
2024-11-27 4:51 ` [PATCH 06/40] fstests: per-test dmhuge instances Dave Chinner
2024-11-27 4:51 ` [PATCH 07/40] fstests: per-test dmthin instances Dave Chinner
2024-11-27 4:51 ` [PATCH 08/40] fstests: per-test dmdust instances Dave Chinner
2024-11-27 4:51 ` [PATCH 09/40] fstests: per-test dmdelay instances Dave Chinner
2024-11-27 4:51 ` [PATCH 10/40] fstests: fix DM device creation/removal vs udev races Dave Chinner
2024-11-27 4:51 ` [PATCH 11/40] fstests: use syncfs rather than sync Dave Chinner
2024-11-27 4:51 ` [PATCH 12/40] fstests: clean up mount and unmount operations Dave Chinner
2024-11-27 4:51 ` Dave Chinner [this message]
2024-12-01 12:31 ` [PATCH 13/40] fstests: clean up loop device instantiation Zorro Lang
2024-12-01 12:50 ` Zorro Lang
2024-12-07 12:44 ` Zorro Lang
2024-12-07 18:59 ` Zorro Lang
2024-12-07 19:51 ` Zorro Lang
2024-11-27 4:51 ` [PATCH 14/40] fstests: xfs/227 is really slow Dave Chinner
2024-11-27 4:51 ` [PATCH 15/40] fstests: mark tests that are unreliable when run in parallel Dave Chinner
2024-11-27 4:51 ` [PATCH 16/40] fstests: use udevadm wait in preference to settle Dave Chinner
2024-11-29 17:10 ` Darrick J. Wong
2024-11-29 22:33 ` Dave Chinner
2024-11-30 2:34 ` Zorro Lang
2024-11-27 4:51 ` [PATCH 17/40] xfs/442: rescale load so it's not exponential Dave Chinner
2024-11-27 4:51 ` [PATCH 18/40] xfs/176: fix broken setup code Dave Chinner
2024-11-27 4:51 ` [PATCH 19/40] xfs/177: remove unused slab object count location checks Dave Chinner
2024-11-27 4:51 ` [PATCH 20/40] fstests: remove uses of killall where possible Dave Chinner
2024-11-27 4:51 ` [PATCH 21/40] generic/127: reduce runtime Dave Chinner
2024-11-27 4:51 ` [PATCH 22/40] quota: system project quota files need to be shared Dave Chinner
2024-11-27 4:51 ` [PATCH 23/40] dmesg: reduce noise from other tests Dave Chinner
2024-11-27 4:51 ` [PATCH 24/40] fstests: stop using /tmp directly Dave Chinner
2024-11-27 4:51 ` [PATCH 25/40] fstests: scale some tests for high CPU count sanity Dave Chinner
2024-11-29 3:34 ` Zorro Lang
2024-11-27 4:51 ` [PATCH 26/40] generic/310: cleanup killing background processes Dave Chinner
2024-11-27 4:51 ` [PATCH 27/40] filter: handle mount errors from CONFIG_BLK_DEV_WRITE_MOUNTED=y Dave Chinner
2024-11-27 4:51 ` [PATCH 28/40] filters: add a filter that accepts EIO instead of other errors Dave Chinner
2024-11-27 4:51 ` [PATCH 29/40] generic/085: general cleanup for reliability and debugging Dave Chinner
2024-11-27 4:52 ` [PATCH 30/40] fstests: don't use directory stacks Dave Chinner
2024-12-01 12:10 ` Zorro Lang
2024-12-01 21:37 ` Dave Chinner
2024-11-27 4:52 ` [PATCH 31/40] fstests: clean up a couple of dm-flakey tests Dave Chinner
2024-11-27 4:52 ` [PATCH 32/40] fstests: clean up termination of various tests Dave Chinner
2024-11-27 4:52 ` [PATCH 33/40] vfstests: some tests require the testdir to be shared Dave Chinner
2024-11-27 4:52 ` [PATCH 34/40] xfs/629: single extent files should be within tolerance Dave Chinner
2024-11-27 4:52 ` [PATCH 35/40] xfs/076: fix broken mkfs filtering Dave Chinner
2024-11-27 4:52 ` [PATCH 36/40] fstests: capture some failures to seqres.full Dave Chinner
2024-11-27 4:52 ` [PATCH 37/40] fstests: always use fail-at-unmount semantics for XFS Dave Chinner
2024-11-27 4:52 ` [PATCH 38/40] generic/062: don't leave debug files in $here on failure Dave Chinner
2024-11-27 4:52 ` [PATCH 39/40] fstests: quota grace periods unreliable under load Dave Chinner
2024-11-27 4:52 ` [PATCH 40/40] fstests: check-parallel Dave Chinner
2024-11-29 4:22 ` [RFC PATCH 00/40] fstests: concurrent test execution Zorro Lang
2024-12-07 0:09 ` Darrick J. Wong
2024-12-07 9:38 ` Zorro Lang
2024-12-08 0:02 ` Dave Chinner
2024-12-08 6:15 ` Zorro Lang
2024-12-10 0:55 ` Dave Chinner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241127045403.3665299-14-david@fromorbit.com \
--to=david@fromorbit.com \
--cc=fstests@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox