fstests: filter mount error message for EUCLEAN and ESTALE
authorEryu Guan <eguan@redhat.com>
Tue, 14 Nov 2017 07:49:36 +0000 (15:49 +0800)
committerEryu Guan <eguan@redhat.com>
Sun, 26 Nov 2017 07:38:55 +0000 (15:38 +0800)
util-linux commit ea848180dd34 ("libmount: add
mnt_context_get_excode()") since v2.30 changed the error message on
EUCLEAN and ESTALE again (and maybe other errno too):

 - mount: <device> on <mountpoint> failed: Structure needs cleaning
 + mount: <mountpoint>: mount(2) system call failed: Structure needs cleaning.

and it causes xfs/005, overlay/037 to fail (and probably xfs/333 too,
but it's always _notrun for now).

And what's more, the mentioned tests would also fail when testing
with util-linux prior to v2.21, no one complained just because the
tests are usually _notrun on such old distributions that ship
util-linux < v2.21.

So let's filter out the changing parts and keep the error message
simple.

Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
common/filter
tests/overlay/037
tests/overlay/037.out
tests/xfs/005
tests/xfs/333
tests/xfs/333.out

index 0cb458b0051f9d360ec449841249f88042c6fe6b..0d3875cc6cdc05eb887bc8e1b148f734271acde8 100644 (file)
@@ -390,6 +390,13 @@ _filter_fstrim()
        egrep -o "[0-9]+ bytes" | $AWK_PROG '{print $1}'
 }
 
+# Remove the ending dot appended to mount error message, util-linux 2.30
+# starts to do so.
+_filter_ending_dot()
+{
+       sed -e "s/\.$//"
+}
+
 # Older mount output referred to "block device" when mounting RO devices
 # It's gone in newer versions
 _filter_ro_mount() {
@@ -397,6 +404,25 @@ _filter_ro_mount() {
            -e "s/mount: cannot mount block device/mount: cannot mount/g"
 }
 
+# Filter a failed mount output due to EUCLEAN and USTALE, util-linux changed
+# the message several times.
+#
+# prior to v2.21:
+# mount: Structure needs cleaning
+# v2.21 to v2.29:
+# mount: mount <device> on <mountpoint> failed: Structure needs cleaning
+# v2.30 and later:
+# mount: <mountpoint>: mount(2) system call failed: Structure needs cleaning.
+#
+# 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
+# mount: Stale file handle
+_filter_error_mount()
+{
+       sed -e "s/mount:\(.*failed:\)/mount:/" | _filter_ending_dot
+}
+
 _filter_od()
 {
        BLOCK_SIZE=$(_get_block_size $SCRATCH_MNT)
index 7287329033580d6ad6e74048d243f0e0b3fd9ece..6710ddaf4802b6c3a5e7d2789a5b2adcc6998ee6 100755 (executable)
@@ -76,12 +76,12 @@ $UMOUNT_PROG $SCRATCH_MNT
 
 # Try to mount an overlay with the same upperdir and different lowerdir - expect ESTALE
 _overlay_scratch_mount_dirs $lowerdir2 $upperdir $workdir -oindex=on \
-       2>&1 | _filter_scratch
+       2>&1 | _filter_error_mount
 $UMOUNT_PROG $SCRATCH_MNT 2>/dev/null
 
 # Try to mount an overlay with the same workdir and different upperdir - expect ESTALE
 _overlay_scratch_mount_dirs $lowerdir $upperdir2 $workdir -oindex=on \
-       2>&1 | _filter_scratch
+       2>&1 | _filter_error_mount
 $UMOUNT_PROG $SCRATCH_MNT 2>/dev/null
 
 # Mount overlay with original lowerdir, upperdir, workdir and index=on - expect success
index 786ef85c29e3daee36884ddd7863f85655e00cbc..d6ad7cfad687c9906d7e204d4d1e34be182551d4 100644 (file)
@@ -1,3 +1,3 @@
 QA output created by 037
-mount: mount SCRATCH_DEV on SCRATCH_MNT failed: Stale file handle
-mount: mount SCRATCH_DEV on SCRATCH_MNT failed: Stale file handle
+mount: Stale file handle
+mount: Stale file handle
index fade4bbf282b38d6efd8dc39b1e32c7fc038f856..ebf4b15ec9b51d0d97414de47c0f971980ed84da 100755 (executable)
@@ -40,11 +40,6 @@ _cleanup()
     rm -f $tmp.*
 }
 
-filter_mount()
-{
-       sed -e "s/mount .* failed: //"
-}
-
 # get standard environment, filters and checks
 . ./common/rc
 . ./common/filter
@@ -64,7 +59,7 @@ _scratch_mkfs_xfs -m crc=1 >> $seqres.full 2>&1 || _fail "mkfs failed"
 $XFS_IO_PROG -c "pwrite 224 4" -c fsync $SCRATCH_DEV | _filter_xfs_io
 
 # should FAIL, the crc is bad; golden output contains mount failure
-_scratch_mount 2>&1 | filter_mount
+_scratch_mount 2>&1 | _filter_error_mount
 
 # success, all done
 status=0
index bf0c811d2435472937a45dd85dc4abde7b0101cb..2f394feda6c96534864db68b544f7cc7349fde16 100755 (executable)
@@ -64,7 +64,7 @@ _scratch_unmount
 
 echo "Corrupt fs"
 _scratch_xfs_db -x -c 'sb 0' -c "write rrmapino $ino" >> $seqres.full
-_scratch_mount 2>&1 | _filter_scratch
+_scratch_mount 2>&1 | _filter_error_mount
 
 echo "Test done, mount should have failed"
 
index f7518f46d900de41c5375f413190bb473924301c..b3c698750f8fb195ab78b2641a0d64f249641e1a 100644 (file)
@@ -2,5 +2,5 @@ QA output created by 333
 Format and mount
 Create some files
 Corrupt fs
-mount: mount SCRATCH_DEV on SCRATCH_MNT failed: Structure needs cleaning
+mount: Structure needs cleaning
 Test done, mount should have failed