aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnand Jain <anand.jain@oracle.com>2024-03-16 22:32:34 +0530
committerAnand Jain <anand.jain@oracle.com>2024-03-24 14:25:18 +0800
commit7337c582d46ac216e364e86a9a8f554fda54b59f (patch)
treeb0ff712e91b5679754905befff4a7d0309b2f2a9
parentac004a25238cc0da321cf3496fc0215a446e7284 (diff)
downloadxfstests-dev-7337c582d46ac216e364e86a9a8f554fda54b59f.tar.gz
generic: test mount fails on physical device with configured dm volume
When a dm Flakey device is configured, (or similar dm where both physical and dm devices are accessible) we have access to both the physical device and the dm flakey device, ensure that the physical device mount fails. Signed-off-by: Anand Jain <anand.jain@oracle.com>
-rwxr-xr-xtests/generic/74160
-rw-r--r--tests/generic/741.out3
2 files changed, 63 insertions, 0 deletions
diff --git a/tests/generic/741 b/tests/generic/741
new file mode 100755
index 0000000000..f8f9a7be76
--- /dev/null
+++ b/tests/generic/741
@@ -0,0 +1,60 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2024 Oracle. All Rights Reserved.
+#
+# FS QA Test 741
+#
+# Attempt to mount both the DM physical device and the DM flakey device.
+# Verify the returned error message.
+#
+. ./common/preamble
+_begin_fstest auto quick volume tempfsid
+
+# Override the default cleanup function.
+_cleanup()
+{
+ umount $extra_mnt &> /dev/null
+ rm -rf $extra_mnt
+ _unmount_flakey
+ _cleanup_flakey
+ cd /
+ rm -r -f $tmp.*
+}
+
+# Import common functions.
+. ./common/filter
+. ./common/dmflakey
+
+# real QA test starts here
+_supported_fs generic
+_require_test
+_require_scratch
+_require_dm_target flakey
+
+[ "$FSTYP" = "btrfs" ] && _fixed_by_kernel_commit XXXXXXXXXXXX \
+ "btrfs: return accurate error code on open failure"
+
+_scratch_mkfs >> $seqres.full
+_init_flakey
+_mount_flakey
+
+extra_mnt=$TEST_DIR/extra_mnt
+rm -rf $extra_mnt
+mkdir -p $extra_mnt
+
+# Mount must fail because the physical device has a dm created on it.
+# Filters alter the return code of the mount.
+_mount $SCRATCH_DEV $extra_mnt 2>&1 | \
+ _filter_testdir_and_scratch | _filter_error_mount
+
+# Try again with flakey unmounted, must fail.
+_unmount_flakey
+_mount $SCRATCH_DEV $extra_mnt 2>&1 | \
+ _filter_testdir_and_scratch | _filter_error_mount
+
+# Removing dm should make mount successful.
+_cleanup_flakey
+_scratch_mount
+
+status=0
+exit
diff --git a/tests/generic/741.out b/tests/generic/741.out
new file mode 100644
index 0000000000..b694f5fad6
--- /dev/null
+++ b/tests/generic/741.out
@@ -0,0 +1,3 @@
+QA output created by 741
+mount: TEST_DIR/extra_mnt: SCRATCH_DEV already mounted or mount point busy
+mount: TEST_DIR/extra_mnt: SCRATCH_DEV already mounted or mount point busy