]> www.infradead.org Git - users/hch/xfstests-dev.git/commitdiff
filter: handle mount errors from CONFIG_BLK_DEV_WRITE_MOUNTED=y
authorDave Chinner <dchinner@redhat.com>
Tue, 26 Nov 2024 21:01:00 +0000 (08:01 +1100)
committerZorro Lang <zlang@kernel.org>
Sun, 8 Dec 2024 14:13:47 +0000 (22:13 +0800)
Kernels post 6.x may have CONFIG_BLK_DEV_WRITE_MOUNTED=y which
prevents mount from opening the block device on a mounted
filesystem. This results in an error such as:

mount: <dev>: Can't open blockdev

which is not the error that callers of _filter_error_mount() are
looking for. It is, however, a direct result of the test trying
to mount an alreayd mounted filesystem, so it is reflecting the same
error case. Hence this mismatch in errors should not fail the test.

Catch this mount error and convert it to the expected
"already mounted" error for the tests that exercise this behaviour.

There is also a minor test change here to push mount failure
information to $seqres.full in the cases where mount errors occur.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Zorro lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
common/filter
tests/xfs/154

index 36d51bd957dd53c3efb132908bc52a471920e8aa..6a509d8b511f91981577eebb16eb9768c1c62469 100644 (file)
@@ -430,6 +430,10 @@ _filter_ro_mount() {
 # v2.38 and later:
 # dmesg(1) may have more information after failed mount mount system call
 #
+# Kernels post 6.x may have CONFIG_BLK_DEV_WRITE_MOUNTED=y which prevents mount
+# from opening the block device on a mounted filesytsem:
+# mount: <dev>: Can't open blockdev
+#
 # This is also true for ESTALE error. So let's remove all the changing parts
 # and keep the 'prior to v2.21' format:
 # mount: Structure needs cleaning
@@ -437,7 +441,9 @@ _filter_ro_mount() {
 _filter_error_mount()
 {
        grep -v "dmesg(1) may have more information after failed mount" | \
-               sed -e "s/mount:\(.*failed:\)/mount:/" | _filter_ending_dot
+               sed -e "s/mount:\(.*failed:\)/mount:/" \
+                   -e "s/mount: SCRATCH_DEV: Can't open blockdev/mount: TEST_DIR\/extra_mnt: SCRATCH_DEV already mounted or mount point busy/" |\
+                   _filter_ending_dot
 }
 
 # Similar to _filter_error_mount, filter a busy mount output.
index e8494bbd64f479887d93f7484351d3014ce8b763..674d067843eec3157d9f0aaea7cc145a421b85ea 100755 (executable)
@@ -46,6 +46,7 @@ test $? -eq 137 || echo "repair should have been killed??"
 _check_scratch_xfs_features NEEDSREPAIR
 _try_scratch_mount &> $tmp.mount
 res=$?
+cat $tmp.mount >> $seqres.full
 _filter_error_mount < $tmp.mount
 if [ $res -eq 0 ]; then
        echo "Should not be able to mount after needsrepair crash"