aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChengguang Xu <cgxu519@icloud.com>2017-12-15 15:47:33 +0800
committerEryu Guan <eguan@redhat.com>2017-12-24 21:30:58 +0800
commit2b4eae7fd825ffe2a966b2b1d8a040dcb999edf7 (patch)
tree5808928a25fdfa4bc6db8c7178d9154cdda48221
parentdb71085194be8e96d4d94156f4c88f47a747e395 (diff)
downloadxfstests-2b4eae7fd825ffe2a966b2b1d8a040dcb999edf7.tar.gz
common/rc: add scratch shutdown support for overlayfs
Enable shutdown tests on overlayfs. This requires configuring overlayfs with TEST|SCRATCH_DEV pointing to block device, which act as base fs of overlay. The legacy config (pointing TEST|SCRATCH_DEV to existing directories) won't support shutdown. Extend _require_scratch_shutdown() to deal with overlay by checking shutdown support on $OVL_BASE_SCRATCH_MNT instead of $SCRATCH_MNT, so we check shutdown support status against the underlying upper fs of overlay. Introduce new _scratch_shutdown() helper to do the actual shutdown work and shutdown upper fs in the case of overlay. Also converting existing bare 'src/godown' calls to use this helper to avoid false failures when testing overlayfs. generic/042 and generic/050 assume $SCRATCH_DEV to be a local device, so add _require_local_device $SCRATCH_DEV rule. [eguan: rewrite commit log] Signed-off-by: Chengguang Xu <cgxu519@icloud.com> Reviewed-by: Eryu Guan <eguan@redhat.com> Signed-off-by: Eryu Guan <eguan@redhat.com>
-rw-r--r--common/rc40
-rwxr-xr-xtests/generic/0421
-rwxr-xr-xtests/generic/0432
-rwxr-xr-xtests/generic/0442
-rwxr-xr-xtests/generic/0452
-rwxr-xr-xtests/generic/0462
-rwxr-xr-xtests/generic/0472
-rwxr-xr-xtests/generic/0482
-rwxr-xr-xtests/generic/0492
-rwxr-xr-xtests/generic/0501
-rwxr-xr-xtests/generic/0512
-rwxr-xr-xtests/generic/0522
-rwxr-xr-xtests/generic/0542
-rwxr-xr-xtests/generic/0552
-rwxr-xr-xtests/generic/3883
-rwxr-xr-xtests/generic/3922
-rwxr-xr-xtests/generic/4172
-rwxr-xr-xtests/generic/4612
-rwxr-xr-xtests/generic/4682
19 files changed, 55 insertions, 20 deletions
diff --git a/common/rc b/common/rc
index cbfc85c580..cebd36347e 100644
--- a/common/rc
+++ b/common/rc
@@ -382,6 +382,23 @@ _scratch_cycle_mount()
_scratch_mount "$opts"
}
+_scratch_shutdown()
+{
+ if [ $FSTYP = "overlay" ]; then
+ # In lagacy overlay usage, it may specify directory as
+ # SCRATCH_DEV, in this case OVL_BASE_SCRATCH_DEV
+ # will be null, so check OVL_BASE_SCRATCH_DEV before
+ # running shutdown to avoid shutting down base fs accidently.
+ if [ -z $OVL_BASE_SCRATCH_DEV ]; then
+ _fail "_scratch_shutdown: call _require_scratch_shutdown first in test"
+ else
+ src/godown $* $OVL_BASE_SCRATCH_MNT
+ fi
+ else
+ src/godown $* $SCRATCH_MNT
+ fi
+}
+
_test_mount()
{
if [ "$FSTYP" == "overlay" ]; then
@@ -2915,10 +2932,25 @@ _require_scratch_shutdown()
{
[ -x src/godown ] || _notrun "src/godown executable not found"
- _scratch_mkfs > /dev/null 2>&1
- _scratch_mount
- src/godown -f $SCRATCH_MNT 2>&1 \
- || _notrun "$FSTYP does not support shutdown"
+ _scratch_mkfs > /dev/null 2>&1 || _notrun "_scratch_mkfs failed on $SCRATCH_DEV"
+ _scratch_mount || _notrun "_scratch_mount failed on $SCRATCH_MNT"
+
+ if [ $FSTYP = "overlay" ]; then
+ if [ -z $OVL_BASE_SCRATCH_DEV ]; then
+ # In lagacy overlay usage, it may specify directory as
+ # SCRATCH_DEV, in this case OVL_BASE_SCRATCH_DEV
+ # will be null, so check OVL_BASE_SCRATCH_DEV before
+ # running shutdown to avoid shutting down base fs accidently.
+ _notrun "$SCRATCH_DEV is not a block device"
+ else
+ src/godown -f $OVL_BASE_SCRATCH_MNT 2>&1 \
+ || _notrun "Underlying filesystem does not support shutdown"
+ fi
+ else
+ src/godown -f $SCRATCH_MNT 2>&1 \
+ || _notrun "$FSTYP does not support shutdown"
+ fi
+
_scratch_unmount
}
diff --git a/tests/generic/042 b/tests/generic/042
index 68ff03c655..00b3a34636 100755
--- a/tests/generic/042
+++ b/tests/generic/042
@@ -92,6 +92,7 @@ _require_xfs_io_command "fpunch"
_require_xfs_io_command "fzero"
_scratch_mkfs >/dev/null 2>&1
+_require_local_device $SCRATCH_DEV
_require_metadata_journaling $SCRATCH_DEV
_scratch_mount
diff --git a/tests/generic/043 b/tests/generic/043
index 5dadab32bb..f61222ce3d 100755
--- a/tests/generic/043
+++ b/tests/generic/043
@@ -63,7 +63,7 @@ done
# give the system a chance to write something out
sleep 10
-src/godown $SCRATCH_MNT
+_scratch_shutdown
_scratch_unmount
_scratch_mount
diff --git a/tests/generic/044 b/tests/generic/044
index 804b1b17c2..f327ee0bf2 100755
--- a/tests/generic/044
+++ b/tests/generic/044
@@ -69,7 +69,7 @@ done
# give the system a chance to write something out
sleep 10
-src/godown $SCRATCH_MNT
+_scratch_shutdown
_scratch_unmount
_scratch_mount
diff --git a/tests/generic/045 b/tests/generic/045
index 5fa7b09f99..53489108cf 100755
--- a/tests/generic/045
+++ b/tests/generic/045
@@ -69,7 +69,7 @@ done
# give the system a chance to write something out
sleep 10
-src/godown $SCRATCH_MNT
+_scratch_shutdown
_scratch_unmount
_scratch_mount
diff --git a/tests/generic/046 b/tests/generic/046
index bf38d53abe..1155ee9877 100755
--- a/tests/generic/046
+++ b/tests/generic/046
@@ -69,7 +69,7 @@ done
# give the system a chance to write something out
sleep 10
-src/godown $SCRATCH_MNT
+_scratch_shutdown
_scratch_unmount
_scratch_mount
diff --git a/tests/generic/047 b/tests/generic/047
index 7d09b04c69..66965f25ca 100755
--- a/tests/generic/047
+++ b/tests/generic/047
@@ -92,7 +92,7 @@ do
done
# shutdown immediately after, then remount and test
-src/godown $SCRATCH_MNT
+_scratch_shutdown
_scratch_unmount
_scratch_mount
_scratch_unmount
diff --git a/tests/generic/048 b/tests/generic/048
index ae561fcabc..fd9fcd9291 100755
--- a/tests/generic/048
+++ b/tests/generic/048
@@ -96,7 +96,7 @@ done
# sync, then shutdown immediately after, then remount and test
sync
-src/godown $SCRATCH_MNT
+_scratch_shutdown
_scratch_unmount
_scratch_mount
_scratch_unmount
diff --git a/tests/generic/049 b/tests/generic/049
index ef2b44c46a..0003046bbc 100755
--- a/tests/generic/049
+++ b/tests/generic/049
@@ -93,7 +93,7 @@ done
# sync, then shutdown immediately after, then remount and test
sync
-src/godown $SCRATCH_MNT
+_scratch_shutdown
_scratch_unmount
_scratch_mount
_scratch_unmount
diff --git a/tests/generic/050 b/tests/generic/050
index efa45f0482..dbf0ac5cd1 100755
--- a/tests/generic/050
+++ b/tests/generic/050
@@ -44,6 +44,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
_supported_fs generic
_supported_os Linux
+_require_local_device $SCRATCH_DEV
_require_scratch_nocheck
_require_scratch_shutdown
_require_norecovery
diff --git a/tests/generic/051 b/tests/generic/051
index 29ac61b600..129a4668aa 100755
--- a/tests/generic/051
+++ b/tests/generic/051
@@ -80,7 +80,7 @@ sync
# now shutdown and unmount
sleep 5
-$here/src/godown $load_dir
+_scratch_shutdown
$KILLALL_PROG -q $FSSTRESS_PROG
wait
diff --git a/tests/generic/052 b/tests/generic/052
index cf0f456800..126f08e633 100755
--- a/tests/generic/052
+++ b/tests/generic/052
@@ -63,7 +63,7 @@ echo "touch files"
touch $SCRATCH_MNT/{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9}
echo "godown"
-src/godown -v -f $SCRATCH_MNT >> $seqres.full
+_scratch_shutdown -v -f >> $seqres.full
echo "unmount"
_scratch_unmount
diff --git a/tests/generic/054 b/tests/generic/054
index db4150094b..12f471a190 100755
--- a/tests/generic/054
+++ b/tests/generic/054
@@ -108,7 +108,7 @@ for s in sync nosync ; do
ls $SCRATCH_MNT | _filter_lostfound
_echofull "godown"
- src/godown -v -f $SCRATCH_MNT >> $seqres.full
+ _scratch_shutdown -v -f >> $seqres.full
_echofull "unmount"
_scratch_unmount >>$seqres.full 2>&1 \
diff --git a/tests/generic/055 b/tests/generic/055
index 1bbe3108c4..c543e75179 100755
--- a/tests/generic/055
+++ b/tests/generic/055
@@ -118,7 +118,7 @@ do
ls -RF $SCRATCH_MNT >$tmp.ls1
_echofull "godown"
- src/godown -v -f $SCRATCH_MNT >> $seqres.full
+ _scratch_shutdown -v -f >> $seqres.full
_echofull "unmount"
_scratch_unmount >>$seqres.full 2>&1 \
diff --git a/tests/generic/388 b/tests/generic/388
index 4f5a63b98f..e0f4821822 100755
--- a/tests/generic/388
+++ b/tests/generic/388
@@ -54,6 +54,7 @@ _supported_fs generic
_supported_os Linux
_require_scratch
+_require_local_device $SCRATCH_DEV
_require_scratch_shutdown
_require_command "$KILLALL_PROG" "killall"
@@ -72,7 +73,7 @@ for i in $(seq 1 $((50 * TIME_FACTOR)) ); do
# purposely include 0 second sleeps to test shutdown immediately after
# recovery
sleep $((RANDOM % 3))
- ./src/godown $SCRATCH_MNT
+ _scratch_shutdown
ps -e | grep fsstress > /dev/null 2>&1
while [ $? -eq 0 ]; do
diff --git a/tests/generic/392 b/tests/generic/392
index 6922f7d2a8..9d53413892 100755
--- a/tests/generic/392
+++ b/tests/generic/392
@@ -73,7 +73,7 @@ check_inode_metadata()
before=`stat "$stat_opt" $testfile`
$XFS_IO_PROG -c "$sync_mode" $testfile | _filter_xfs_io
- src/godown $SCRATCH_MNT | tee -a $seqres.full
+ _scratch_shutdown | tee -a $seqres.full
_scratch_cycle_mount
after=`stat "$stat_opt" $testfile`
diff --git a/tests/generic/417 b/tests/generic/417
index 690ceb5d16..e66e0aeb7a 100755
--- a/tests/generic/417
+++ b/tests/generic/417
@@ -75,7 +75,7 @@ function create_dirty_orphans() {
sleep 3
echo "godown"
- src/godown -v -f $SCRATCH_MNT >> $seqres.full
+ _scratch_shutdown -v -f >> $seqres.full
# kill the multi_open_unlink
kill $pid 2>/dev/null
diff --git a/tests/generic/461 b/tests/generic/461
index 2f85114948..50b9c6d4fb 100755
--- a/tests/generic/461
+++ b/tests/generic/461
@@ -68,7 +68,7 @@ sync
# now shutdown and unmount
sleep 5
-$here/src/godown $load_dir
+_scratch_shutdown
$KILLALL_PROG -q $FSSTRESS_PROG
wait
diff --git a/tests/generic/468 b/tests/generic/468
index b97a8d6348..30c41744ba 100755
--- a/tests/generic/468
+++ b/tests/generic/468
@@ -84,7 +84,7 @@ check_inode_metadata()
before=`stat "$stat_opt" $testfile`
$XFS_IO_PROG -c "$sync_mode" $testfile | _filter_xfs_io
- $here/src/godown $SCRATCH_MNT | tee -a $seqres.full
+ _scratch_shutdown | tee -a $seqres.full
_scratch_cycle_mount
after=`stat "$stat_opt" $testfile`