* [PATCH 1/2] treewide: convert all $MOUNT_PROG to _mount
2024-12-31 23:35 [PATCHSET 3/5] fstests: capture logs from mount failures Darrick J. Wong
@ 2024-12-31 23:56 ` Darrick J. Wong
0 siblings, 0 replies; 13+ messages in thread
From: Darrick J. Wong @ 2024-12-31 23:56 UTC (permalink / raw)
To: zlang, djwong; +Cc: fstests, linux-xfs
From: Darrick J. Wong <djwong@kernel.org>
Going to add some new log scraping functionality when mount failures
occur, so we need everyone to use _mount instead of $MOUNT_PROG.
Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
---
common/btrfs | 4 ++--
common/dmdelay | 2 +-
common/dmerror | 2 +-
common/dmlogwrites | 2 +-
common/overlay | 6 +++---
tests/btrfs/075 | 2 +-
tests/btrfs/208 | 2 +-
tests/ext4/032 | 2 +-
tests/generic/067 | 6 +++---
tests/generic/085 | 2 +-
tests/generic/361 | 2 +-
tests/generic/373 | 2 +-
tests/generic/374 | 2 +-
tests/generic/409 | 6 +++---
tests/generic/410 | 8 ++++----
tests/generic/411 | 8 ++++----
tests/generic/589 | 8 ++++----
tests/overlay/005 | 4 ++--
tests/overlay/025 | 2 +-
tests/overlay/035 | 2 +-
tests/overlay/062 | 2 +-
tests/overlay/083 | 6 +++---
tests/overlay/086 | 12 ++++++------
tests/xfs/078 | 2 +-
tests/xfs/149 | 4 ++--
tests/xfs/289 | 4 ++--
tests/xfs/544 | 2 +-
27 files changed, 53 insertions(+), 53 deletions(-)
diff --git a/common/btrfs b/common/btrfs
index 95a9c8e6c7f448..64f38cc240ab8b 100644
--- a/common/btrfs
+++ b/common/btrfs
@@ -351,7 +351,7 @@ _btrfs_stress_subvolume()
mkdir -p $subvol_mnt
while [ ! -e $stop_file ]; do
$BTRFS_UTIL_PROG subvolume create $btrfs_mnt/$subvol_name
- $MOUNT_PROG -o subvol=$subvol_name $btrfs_dev $subvol_mnt
+ _mount -o subvol=$subvol_name $btrfs_dev $subvol_mnt
$UMOUNT_PROG $subvol_mnt
$BTRFS_UTIL_PROG subvolume delete $btrfs_mnt/$subvol_name
done
@@ -437,7 +437,7 @@ _btrfs_stress_remount_compress()
local btrfs_mnt=$1
while true; do
for algo in no zlib lzo; do
- $MOUNT_PROG -o remount,compress=$algo $btrfs_mnt
+ _mount -o remount,compress=$algo $btrfs_mnt
done
done
}
diff --git a/common/dmdelay b/common/dmdelay
index 66cac1a70c14c8..794ea37ba200ce 100644
--- a/common/dmdelay
+++ b/common/dmdelay
@@ -20,7 +20,7 @@ _init_delay()
_mount_delay()
{
_scratch_options mount
- $MOUNT_PROG -t $FSTYP `_common_dev_mount_options` $SCRATCH_OPTIONS \
+ _mount -t $FSTYP `_common_dev_mount_options` $SCRATCH_OPTIONS \
$DELAY_DEV $SCRATCH_MNT
}
diff --git a/common/dmerror b/common/dmerror
index 3494b6dd3b9479..2f006142a309fe 100644
--- a/common/dmerror
+++ b/common/dmerror
@@ -91,7 +91,7 @@ _dmerror_init()
_dmerror_mount()
{
_scratch_options mount
- $MOUNT_PROG -t $FSTYP `_common_dev_mount_options $*` $SCRATCH_OPTIONS \
+ _mount -t $FSTYP `_common_dev_mount_options $*` $SCRATCH_OPTIONS \
$DMERROR_DEV $SCRATCH_MNT
}
diff --git a/common/dmlogwrites b/common/dmlogwrites
index 7a8a9078cb8b65..c054acb875a384 100644
--- a/common/dmlogwrites
+++ b/common/dmlogwrites
@@ -139,7 +139,7 @@ _log_writes_mkfs()
_log_writes_mount()
{
_scratch_options mount
- $MOUNT_PROG -t $FSTYP `_common_dev_mount_options $*` $SCRATCH_OPTIONS \
+ _mount -t $FSTYP `_common_dev_mount_options $*` $SCRATCH_OPTIONS \
$LOGWRITES_DMDEV $SCRATCH_MNT
}
diff --git a/common/overlay b/common/overlay
index faa9339a6477f7..da1d8d2c3183f4 100644
--- a/common/overlay
+++ b/common/overlay
@@ -29,13 +29,13 @@ _overlay_mount_dirs()
[ -n "$upperdir" ] && [ "$upperdir" != "-" ] && \
diropts+=",upperdir=$upperdir,workdir=$workdir"
- $MOUNT_PROG -t overlay $diropts `_common_dev_mount_options $*`
+ _mount -t overlay $diropts `_common_dev_mount_options $*`
}
# Mount with mnt/dev of scratch mount and custom mount options
_overlay_scratch_mount_opts()
{
- $MOUNT_PROG -t overlay $OVL_BASE_SCRATCH_MNT $SCRATCH_MNT $*
+ _mount -t overlay $OVL_BASE_SCRATCH_MNT $SCRATCH_MNT $*
}
# Mount with same options/mnt/dev of scratch mount, but optionally
@@ -127,7 +127,7 @@ _overlay_base_scratch_mount()
_overlay_scratch_mount()
{
if echo "$*" | grep -q remount; then
- $MOUNT_PROG $SCRATCH_MNT $*
+ _mount $SCRATCH_MNT $*
return
fi
diff --git a/tests/btrfs/075 b/tests/btrfs/075
index 917993ca2da3a6..737c4ffdd57865 100755
--- a/tests/btrfs/075
+++ b/tests/btrfs/075
@@ -37,7 +37,7 @@ _scratch_mount
subvol_mnt=$TEST_DIR/$seq.mnt
mkdir -p $subvol_mnt
$BTRFS_UTIL_PROG subvolume create $SCRATCH_MNT/subvol >>$seqres.full 2>&1
-$MOUNT_PROG -o subvol=subvol $SELINUX_MOUNT_OPTIONS $SCRATCH_DEV $subvol_mnt
+_mount -o subvol=subvol $SELINUX_MOUNT_OPTIONS $SCRATCH_DEV $subvol_mnt
status=$?
exit
diff --git a/tests/btrfs/208 b/tests/btrfs/208
index 5ea732ae8f71a7..93a999541dab06 100755
--- a/tests/btrfs/208
+++ b/tests/btrfs/208
@@ -45,7 +45,7 @@ _scratch_unmount
# Now we mount the subvol2, which makes subvol3 not accessible for this mount
# point, but we should be able to delete it using it's subvolume id
-$MOUNT_PROG -o subvol=subvol2 $SCRATCH_DEV $SCRATCH_MNT
+_mount -o subvol=subvol2 $SCRATCH_DEV $SCRATCH_MNT
_delete_and_list subvol3 "Last remaining subvolume:"
_scratch_unmount
diff --git a/tests/ext4/032 b/tests/ext4/032
index 238ab178363c12..9a1b9312cc42cc 100755
--- a/tests/ext4/032
+++ b/tests/ext4/032
@@ -48,7 +48,7 @@ ext4_online_resize()
$seqres.full 2>&1 || _fail "mkfs failed"
echo "+++ mount image file" | tee -a $seqres.full
- $MOUNT_PROG -t ${FSTYP} ${LOOP_DEVICE} ${IMG_MNT} > \
+ _mount -t ${FSTYP} ${LOOP_DEVICE} ${IMG_MNT} > \
/dev/null 2>&1 || _fail "mount failed"
echo "+++ resize fs to $final_size" | tee -a $seqres.full
diff --git a/tests/generic/067 b/tests/generic/067
index b561b7bc5946a2..b6e984f5231753 100755
--- a/tests/generic/067
+++ b/tests/generic/067
@@ -34,7 +34,7 @@ mount_nonexistent_mnt()
{
echo "# mount to nonexistent mount point" >>$seqres.full
rm -rf $TEST_DIR/nosuchdir
- $MOUNT_PROG $SCRATCH_DEV $TEST_DIR/nosuchdir >>$seqres.full 2>&1
+ _mount $SCRATCH_DEV $TEST_DIR/nosuchdir >>$seqres.full 2>&1
}
# fs driver should be able to handle mounting a free loop device gracefully
@@ -43,7 +43,7 @@ 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 -t $FSTYP $loopdev $SCRATCH_MNT >>$seqres.full 2>&1
}
# mount with wrong fs type specified.
@@ -55,7 +55,7 @@ mount_wrong_fstype()
fs=xfs
fi
echo "# mount with wrong fs type" >>$seqres.full
- $MOUNT_PROG -t $fs $SCRATCH_DEV $SCRATCH_MNT >>$seqres.full 2>&1
+ _mount -t $fs $SCRATCH_DEV $SCRATCH_MNT >>$seqres.full 2>&1
}
# umount a symlink to device, which is not mounted.
diff --git a/tests/generic/085 b/tests/generic/085
index cfe6112d6b444d..cbabd257cad8f0 100755
--- a/tests/generic/085
+++ b/tests/generic/085
@@ -69,7 +69,7 @@ for ((i=0; i<100; i++)); do
done &
pid=$!
for ((i=0; i<100; i++)); do
- $MOUNT_PROG $lvdev $SCRATCH_MNT >/dev/null 2>&1
+ _mount $lvdev $SCRATCH_MNT >/dev/null 2>&1
$UMOUNT_PROG $lvdev >/dev/null 2>&1
done &
pid="$pid $!"
diff --git a/tests/generic/361 b/tests/generic/361
index c56157391d3209..c2ebda3c1a01ad 100755
--- a/tests/generic/361
+++ b/tests/generic/361
@@ -52,7 +52,7 @@ fi
$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
+_mount -o remount,ro $fs_mnt >>$seqres.full 2>&1
# success, all done
echo "Silence is golden"
diff --git a/tests/generic/373 b/tests/generic/373
index 3bd46963a76686..0d5a50cbee40b8 100755
--- a/tests/generic/373
+++ b/tests/generic/373
@@ -42,7 +42,7 @@ blksz=65536
sz=$((blksz * blocks))
echo "Mount otherdir"
-$MOUNT_PROG --bind $SCRATCH_MNT $otherdir
+_mount --bind $SCRATCH_MNT $otherdir
echo "Create file"
_pwrite_byte 0x61 0 $sz $testdir/file >> $seqres.full
diff --git a/tests/generic/374 b/tests/generic/374
index acb23d17289784..977a2b268bbc98 100755
--- a/tests/generic/374
+++ b/tests/generic/374
@@ -41,7 +41,7 @@ blksz=65536
sz=$((blocks * blksz))
echo "Mount otherdir"
-$MOUNT_PROG --bind $SCRATCH_MNT $otherdir
+_mount --bind $SCRATCH_MNT $otherdir
echo "Create file"
_pwrite_byte 0x61 0 $sz $testdir/file >> $seqres.full
diff --git a/tests/generic/409 b/tests/generic/409
index b7edc2ac664461..79468e2b0ddb41 100755
--- a/tests/generic/409
+++ b/tests/generic/409
@@ -87,7 +87,7 @@ start_test()
_scratch_mkfs >$seqres.full 2>&1
_get_mount -t $FSTYP $SCRATCH_DEV $MNTHEAD
- $MOUNT_PROG --make-"${type}" $MNTHEAD
+ _mount --make-"${type}" $MNTHEAD
mkdir $mpA $mpB $mpC $mpD
}
@@ -107,9 +107,9 @@ bind_run()
echo "bind $source on $dest"
_get_mount -t $FSTYP $SCRATCH_DEV $mpA
mkdir -p $mpA/dir 2>/dev/null
- $MOUNT_PROG --make-shared $mpA
+ _mount --make-shared $mpA
_get_mount --bind $mpA $mpB
- $MOUNT_PROG --make-"$source" $mpB
+ _mount --make-"$source" $mpB
# maybe unbindable at here
_get_mount --bind $mpB $mpC 2>/dev/null
if [ $? -ne 0 ]; then
diff --git a/tests/generic/410 b/tests/generic/410
index 902f27144285e4..db8c97dbac7701 100755
--- a/tests/generic/410
+++ b/tests/generic/410
@@ -93,7 +93,7 @@ start_test()
_scratch_mkfs >>$seqres.full 2>&1
_get_mount -t $FSTYP $SCRATCH_DEV $MNTHEAD
- $MOUNT_PROG --make-"${type}" $MNTHEAD
+ _mount --make-"${type}" $MNTHEAD
mkdir $mpA $mpB $mpC
}
@@ -117,14 +117,14 @@ run()
echo "make-$cmd a $orgs mount"
_get_mount -t $FSTYP $SCRATCH_DEV $mpA
mkdir -p $mpA/dir 2>/dev/null
- $MOUNT_PROG --make-shared $mpA
+ _mount --make-shared $mpA
# prepare the original status on mpB
_get_mount --bind $mpA $mpB
# shared&slave status need to do make-slave then make-shared
# two operations.
for t in $orgs; do
- $MOUNT_PROG --make-"$t" $mpB
+ _mount --make-"$t" $mpB
done
# "before" for prepare and check original status
@@ -145,7 +145,7 @@ run()
_put_mount # umount C
fi
if [ "$i" = "before" ];then
- $MOUNT_PROG --make-"${cmd}" $mpB
+ _mount --make-"${cmd}" $mpB
fi
done
diff --git a/tests/generic/411 b/tests/generic/411
index c35436c82e988e..09a813f5d3028e 100755
--- a/tests/generic/411
+++ b/tests/generic/411
@@ -76,7 +76,7 @@ start_test()
_scratch_mkfs >$seqres.full 2>&1
_get_mount -t $FSTYP $SCRATCH_DEV $MNTHEAD
- $MOUNT_PROG --make-"${type}" $MNTHEAD
+ _mount --make-"${type}" $MNTHEAD
mkdir $mpA $mpB $mpC
}
@@ -99,11 +99,11 @@ crash_test()
_get_mount -t $FSTYP $SCRATCH_DEV $mpA
mkdir $mpA/mnt1
- $MOUNT_PROG --make-shared $mpA
+ _mount --make-shared $mpA
_get_mount --bind $mpA $mpB
_get_mount --bind $mpA $mpC
- $MOUNT_PROG --make-slave $mpB
- $MOUNT_PROG --make-slave $mpC
+ _mount --make-slave $mpB
+ _mount --make-slave $mpC
_get_mount -t $FSTYP $SCRATCH_DEV $mpA/mnt1
mkdir $mpA/mnt1/mnt2
diff --git a/tests/generic/589 b/tests/generic/589
index 0ce16556a05df9..6f69abd17ab01e 100755
--- a/tests/generic/589
+++ b/tests/generic/589
@@ -80,12 +80,12 @@ start_test()
_get_mount -t $FSTYP $SCRATCH_DEV $SRCHEAD
# make sure $SRCHEAD is private
- $MOUNT_PROG --make-private $SRCHEAD
+ _mount --make-private $SRCHEAD
_get_mount -t $FSTYP $SCRATCH_DEV $DSTHEAD
# test start with a bind, then make-shared $DSTHEAD
_get_mount --bind $DSTHEAD $DSTHEAD
- $MOUNT_PROG --make-"${type}" $DSTHEAD
+ _mount --make-"${type}" $DSTHEAD
mkdir $mpA $mpB $mpC $mpD
}
@@ -105,10 +105,10 @@ move_run()
echo "move $source to $dest"
_get_mount -t $FSTYP $SCRATCH_DEV $mpA
mkdir -p $mpA/dir 2>/dev/null
- $MOUNT_PROG --make-shared $mpA
+ _mount --make-shared $mpA
# need a peer for slave later
_get_mount --bind $mpA $mpB
- $MOUNT_PROG --make-"$source" $mpB
+ _mount --make-"$source" $mpB
# maybe unbindable at here
_get_mount --move $mpB $mpC 2>/dev/null
if [ $? -ne 0 ]; then
diff --git a/tests/overlay/005 b/tests/overlay/005
index 4c11d5e1b6f701..01914ee17b9a30 100755
--- a/tests/overlay/005
+++ b/tests/overlay/005
@@ -50,8 +50,8 @@ $MKFS_XFS_PROG -f -n ftype=1 $upper_loop_dev >>$seqres.full 2>&1
# mount underlying xfs
mkdir -p ${OVL_BASE_SCRATCH_MNT}/lowermnt
mkdir -p ${OVL_BASE_SCRATCH_MNT}/uppermnt
-$MOUNT_PROG $fs_loop_dev ${OVL_BASE_SCRATCH_MNT}/lowermnt
-$MOUNT_PROG $upper_loop_dev ${OVL_BASE_SCRATCH_MNT}/uppermnt
+_mount $fs_loop_dev ${OVL_BASE_SCRATCH_MNT}/lowermnt
+_mount $upper_loop_dev ${OVL_BASE_SCRATCH_MNT}/uppermnt
# prepare dirs
mkdir -p ${OVL_BASE_SCRATCH_MNT}/lowermnt/lower
diff --git a/tests/overlay/025 b/tests/overlay/025
index dc819a39348b69..6ba46191b557be 100755
--- a/tests/overlay/025
+++ b/tests/overlay/025
@@ -36,7 +36,7 @@ _require_extra_fs tmpfs
# create a tmpfs in $TEST_DIR
tmpfsdir=$TEST_DIR/tmpfs
mkdir -p $tmpfsdir
-$MOUNT_PROG -t tmpfs tmpfs $tmpfsdir
+_mount -t tmpfs tmpfs $tmpfsdir
mkdir -p $tmpfsdir/{lower,upper,work,mnt}
mkdir -p -m 0 $tmpfsdir/upper/testd
diff --git a/tests/overlay/035 b/tests/overlay/035
index 0b3257c4cce09e..cede58790e1b9d 100755
--- a/tests/overlay/035
+++ b/tests/overlay/035
@@ -42,7 +42,7 @@ mkdir -p $lowerdir1 $lowerdir2 $upperdir $workdir
# Verify that overlay is mounted read-only and that it cannot be remounted rw.
_overlay_scratch_mount_opts -o"lowerdir=$lowerdir2:$lowerdir1"
touch $SCRATCH_MNT/foo 2>&1 | _filter_scratch
-$MOUNT_PROG -o remount,rw $SCRATCH_MNT 2>&1 | _filter_ro_mount
+_mount -o remount,rw $SCRATCH_MNT 2>&1 | _filter_ro_mount
$UMOUNT_PROG $SCRATCH_MNT
# Make workdir immutable to prevent workdir re-create on mount
diff --git a/tests/overlay/062 b/tests/overlay/062
index e44628b7459bfb..9a1db7419c4ca2 100755
--- a/tests/overlay/062
+++ b/tests/overlay/062
@@ -60,7 +60,7 @@ lowertestdir=$lower2/testdir
create_test_files $lowertestdir
# bind mount to pin lower test dir dentry to dcache
-$MOUNT_PROG --bind $lowertestdir $lowertestdir
+_mount --bind $lowertestdir $lowertestdir
# For non-upper overlay mount, nfs_export requires disabling redirect_dir.
_overlay_scratch_mount_opts \
diff --git a/tests/overlay/083 b/tests/overlay/083
index d037d4c858e6a6..56e02f8cc77d73 100755
--- a/tests/overlay/083
+++ b/tests/overlay/083
@@ -40,14 +40,14 @@ mkdir -p "$lowerdir_spaces" "$lowerdir_colons" "$lowerdir_commas"
# _overlay_mount_* helpers do not handle special chars well, so execute mount directly.
# if escaped colons are not parsed correctly, mount will fail.
-$MOUNT_PROG -t overlay ovl_esc_test $SCRATCH_MNT \
+_mount -t overlay ovl_esc_test $SCRATCH_MNT \
-o"upperdir=$upperdir,workdir=$workdir" \
-o"lowerdir=$lowerdir_colons_esc:$lowerdir_spaces" \
2>&1 | tee -a $seqres.full
# if spaces are not escaped when showing mount options,
# mount command will not show the word 'spaces' after the spaces
-$MOUNT_PROG -t overlay | grep ovl_esc_test | tee -a $seqres.full | grep -v spaces && \
+_mount -t overlay | grep ovl_esc_test | tee -a $seqres.full | grep -v spaces && \
echo "ERROR: escaped spaces truncated from lowerdir mount option"
# Re-create the upper/work dirs to mount them with a different lower
@@ -65,7 +65,7 @@ mkdir -p "$upperdir" "$workdir"
# and this test will fail, but the failure would indicate a libmount issue, not
# a kernel issue. Therefore, force libmount to use mount(2) syscall, so we only
# test the kernel fix.
-LIBMOUNT_FORCE_MOUNT2=always $MOUNT_PROG -t overlay $OVL_BASE_SCRATCH_DEV $SCRATCH_MNT \
+LIBMOUNT_FORCE_MOUNT2=always _mount -t overlay $OVL_BASE_SCRATCH_DEV $SCRATCH_MNT \
-o"upperdir=$upperdir,workdir=$workdir,lowerdir=$lowerdir_commas_esc" 2>> $seqres.full || \
echo "ERROR: incorrect parsing of escaped comma in lowerdir mount option"
diff --git a/tests/overlay/086 b/tests/overlay/086
index 9c8a00588595f6..23c56d074ff34a 100755
--- a/tests/overlay/086
+++ b/tests/overlay/086
@@ -33,21 +33,21 @@ mkdir -p "$lowerdir_spaces" "$lowerdir_colons"
# _overlay_mount_* helpers do not handle lowerdir+,datadir+, so execute mount directly.
# check illegal combinations and order of lowerdir,lowerdir+,datadir+
-$MOUNT_PROG -t overlay none $SCRATCH_MNT \
+_mount -t overlay none $SCRATCH_MNT \
-o"lowerdir=$lowerdir,lowerdir+=$lowerdir_colons" \
2>> $seqres.full && \
echo "ERROR: invalid combination of lowerdir and lowerdir+ mount options"
$UMOUNT_PROG $SCRATCH_MNT 2>/dev/null
-$MOUNT_PROG -t overlay none $SCRATCH_MNT \
+_mount -t overlay none $SCRATCH_MNT \
-o"lowerdir=$lowerdir,datadir+=$lowerdir_colons" \
-o redirect_dir=follow,metacopy=on 2>> $seqres.full && \
echo "ERROR: invalid combination of lowerdir and datadir+ mount options"
$UMOUNT_PROG $SCRATCH_MNT 2>/dev/null
-$MOUNT_PROG -t overlay none $SCRATCH_MNT \
+_mount -t overlay none $SCRATCH_MNT \
-o"datadir+=$lowerdir,lowerdir+=$lowerdir_colons" \
-o redirect_dir=follow,metacopy=on 2>> $seqres.full && \
echo "ERROR: invalid order of lowerdir+ and datadir+ mount options"
@@ -55,7 +55,7 @@ $MOUNT_PROG -t overlay none $SCRATCH_MNT \
$UMOUNT_PROG $SCRATCH_MNT 2>/dev/null
# mount is expected to fail with escaped colons.
-$MOUNT_PROG -t overlay none $SCRATCH_MNT \
+_mount -t overlay none $SCRATCH_MNT \
-o"lowerdir+=$lowerdir_colons_esc" \
2>> $seqres.full && \
echo "ERROR: incorrect parsing of escaped colons in lowerdir+ mount option"
@@ -63,14 +63,14 @@ $MOUNT_PROG -t overlay none $SCRATCH_MNT \
$UMOUNT_PROG $SCRATCH_MNT 2>/dev/null
# mount is expected to succeed without escaped colons.
-$MOUNT_PROG -t overlay ovl_esc_test $SCRATCH_MNT \
+_mount -t overlay ovl_esc_test $SCRATCH_MNT \
-o"lowerdir+=$lowerdir_colons,datadir+=$lowerdir_spaces" \
-o redirect_dir=follow,metacopy=on \
2>&1 | tee -a $seqres.full
# if spaces are not escaped when showing mount options,
# mount command will not show the word 'spaces' after the spaces
-$MOUNT_PROG -t overlay | grep ovl_esc_test | tee -a $seqres.full | \
+_mount -t overlay | grep ovl_esc_test | tee -a $seqres.full | \
grep -q 'datadir+'.*spaces || \
echo "ERROR: escaped spaces truncated from datadir+ mount option"
diff --git a/tests/xfs/078 b/tests/xfs/078
index 834c99a0020153..4224fd40bc9fea 100755
--- a/tests/xfs/078
+++ b/tests/xfs/078
@@ -75,7 +75,7 @@ _grow_loop()
$XFS_IO_PROG -c "pwrite $new_size $bsize" $LOOP_IMG | _filter_io
LOOP_DEV=`_create_loop_device $LOOP_IMG`
echo "*** mount loop filesystem"
- $MOUNT_PROG -t xfs $LOOP_DEV $LOOP_MNT
+ _mount -t xfs $LOOP_DEV $LOOP_MNT
echo "*** grow loop filesystem"
$XFS_GROWFS_PROG $LOOP_MNT 2>&1 | _filter_growfs 2>&1
diff --git a/tests/xfs/149 b/tests/xfs/149
index f1b2405e7bff11..bbaf86132dff37 100755
--- a/tests/xfs/149
+++ b/tests/xfs/149
@@ -64,7 +64,7 @@ $XFS_GROWFS_PROG $loop_symlink 2>&1 | sed -e s:$loop_symlink:LOOPSYMLINK:
# These mounted operations should pass
echo "=== mount ==="
-$MOUNT_PROG $loop_dev $mntdir || _fail "!!! failed to loopback mount"
+_mount $loop_dev $mntdir || _fail "!!! failed to loopback mount"
echo "=== xfs_growfs - check device node ==="
$XFS_GROWFS_PROG -D 8192 $loop_dev > /dev/null
@@ -76,7 +76,7 @@ echo "=== unmount ==="
$UMOUNT_PROG $mntdir || _fail "!!! failed to unmount"
echo "=== mount device symlink ==="
-$MOUNT_PROG $loop_symlink $mntdir || _fail "!!! failed to loopback mount"
+_mount $loop_symlink $mntdir || _fail "!!! failed to loopback mount"
echo "=== xfs_growfs - check device symlink ==="
$XFS_GROWFS_PROG -D 16384 $loop_symlink > /dev/null
diff --git a/tests/xfs/289 b/tests/xfs/289
index cf0f2883c4f373..089a3f8cc14a68 100755
--- a/tests/xfs/289
+++ b/tests/xfs/289
@@ -56,7 +56,7 @@ echo "=== xfs_growfs - plain file - should be rejected ==="
$XFS_GROWFS_PROG $tmpfile 2>&1 | _filter_test_dir
echo "=== mount ==="
-$MOUNT_PROG -o loop $tmpfile $tmpdir || _fail "!!! failed to loopback mount"
+_mount -o loop $tmpfile $tmpdir || _fail "!!! failed to loopback mount"
echo "=== xfs_growfs - mounted - check absolute path ==="
$XFS_GROWFS_PROG -D 8192 $tmpdir | _filter_test_dir > /dev/null
@@ -79,7 +79,7 @@ $XFS_GROWFS_PROG -D 28672 tmpsymlink.$$ > /dev/null
echo "=== xfs_growfs - bind mount ==="
mkdir $tmpbind
-$MOUNT_PROG -o bind $tmpdir $tmpbind
+_mount -o bind $tmpdir $tmpbind
$XFS_GROWFS_PROG -D 32768 $tmpbind | _filter_test_dir > /dev/null
echo "=== xfs_growfs - bind mount - relative path ==="
diff --git a/tests/xfs/544 b/tests/xfs/544
index bd694453d5409f..a3a23c1726ca1c 100755
--- a/tests/xfs/544
+++ b/tests/xfs/544
@@ -35,7 +35,7 @@ mkdir $TEST_DIR/dest.$seq
# Test
echo "*** dump with bind-mounted test ***" >> $seqres.full
-$MOUNT_PROG --bind $TEST_DIR/src.$seq $TEST_DIR/dest.$seq || _fail "Bind mount failed"
+_mount --bind $TEST_DIR/src.$seq $TEST_DIR/dest.$seq || _fail "Bind mount failed"
$XFSDUMP_PROG -L session -M test -f $tmp.dump $TEST_DIR/dest.$seq \
>> $seqres.full 2>&1 && echo "dump with bind-mounted should be failed, but passed."
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCHSET 2/2] fstests: capture logs from mount failures
@ 2026-04-13 17:50 Darrick J. Wong
2026-04-13 17:51 ` [PATCH 1/2] treewide: convert all $MOUNT_PROG to _mount Darrick J. Wong
2026-04-13 17:51 ` [PATCH 2/2] check: capture dmesg of mount failures if test fails Darrick J. Wong
0 siblings, 2 replies; 13+ messages in thread
From: Darrick J. Wong @ 2026-04-13 17:50 UTC (permalink / raw)
To: zlang, djwong; +Cc: linux-xfs, fstests
Hi all,
Whenever a mount fails, we should capture the kernel logs for the last
few seconds before the failure. If the test fails, retain the log
contents for further analysis.
If you're going to start using this code, I strongly recommend pulling
from my git trees, which are linked below.
With a bit of luck, this should all go splendidly.
Comments and questions are, as always, welcome.
--D
fstests git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=capture-mount-failures
---
Commits in this patchset:
* treewide: convert all $MOUNT_PROG to _mount
* check: capture dmesg of mount failures if test fails
---
check | 22 +++++++++++++++++++++-
common/btrfs | 4 ++--
common/dmdelay | 2 +-
common/dmerror | 2 +-
common/dmlogwrites | 2 +-
common/overlay | 6 +++---
common/rc | 26 +++++++++++++++++++++++++-
common/report | 8 ++++++++
doc/xunit.xsd | 12 +++++++++++-
tests/btrfs/012 | 6 +++---
tests/btrfs/075 | 2 +-
tests/btrfs/089 | 2 +-
tests/btrfs/136 | 4 ++--
tests/btrfs/208 | 2 +-
tests/btrfs/330 | 2 +-
tests/btrfs/335 | 2 +-
tests/ext4/032 | 2 +-
tests/generic/067 | 4 ++--
tests/generic/089 | 2 +-
tests/generic/120 | 2 +-
tests/generic/306 | 2 +-
tests/generic/361 | 2 +-
tests/generic/373 | 2 +-
tests/generic/374 | 2 +-
tests/generic/395 | 4 ++--
tests/generic/409 | 6 +++---
tests/generic/410 | 8 ++++----
tests/generic/411 | 8 ++++----
tests/generic/504 | 4 ++--
tests/generic/589 | 8 ++++----
tests/generic/631 | 2 +-
tests/generic/717 | 2 +-
tests/overlay/005 | 4 ++--
tests/overlay/025 | 2 +-
tests/overlay/062 | 2 +-
tests/overlay/083 | 6 +++---
tests/overlay/086 | 12 ++++++------
tests/selftest/008 | 20 ++++++++++++++++++++
tests/selftest/008.out | 1 +
tests/xfs/044 | 2 +-
tests/xfs/049 | 8 ++++----
tests/xfs/149 | 4 ++--
tests/xfs/206 | 2 +-
tests/xfs/250 | 2 +-
tests/xfs/289 | 4 ++--
tests/xfs/300 | 2 +-
tests/xfs/507 | 2 +-
tests/xfs/544 | 2 +-
48 files changed, 161 insertions(+), 78 deletions(-)
create mode 100755 tests/selftest/008
create mode 100644 tests/selftest/008.out
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 1/2] treewide: convert all $MOUNT_PROG to _mount
2026-04-13 17:50 [PATCHSET 2/2] fstests: capture logs from mount failures Darrick J. Wong
@ 2026-04-13 17:51 ` Darrick J. Wong
2026-04-14 7:58 ` Christoph Hellwig
2026-04-16 17:34 ` Zorro Lang
2026-04-13 17:51 ` [PATCH 2/2] check: capture dmesg of mount failures if test fails Darrick J. Wong
1 sibling, 2 replies; 13+ messages in thread
From: Darrick J. Wong @ 2026-04-13 17:51 UTC (permalink / raw)
To: zlang, djwong; +Cc: linux-xfs, fstests
From: Darrick J. Wong <djwong@kernel.org>
Going to add some new log scraping functionality when mount failures
occur, so we need everyone to use _mount instead of $MOUNT_PROG.
Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
---
common/btrfs | 4 ++--
common/dmdelay | 2 +-
common/dmerror | 2 +-
common/dmlogwrites | 2 +-
common/overlay | 6 +++---
tests/btrfs/012 | 6 +++---
tests/btrfs/075 | 2 +-
tests/btrfs/089 | 2 +-
tests/btrfs/136 | 4 ++--
tests/btrfs/208 | 2 +-
tests/btrfs/330 | 2 +-
tests/btrfs/335 | 2 +-
tests/ext4/032 | 2 +-
tests/generic/067 | 4 ++--
tests/generic/089 | 2 +-
tests/generic/120 | 2 +-
tests/generic/306 | 2 +-
tests/generic/361 | 2 +-
tests/generic/373 | 2 +-
tests/generic/374 | 2 +-
tests/generic/395 | 4 ++--
tests/generic/409 | 6 +++---
tests/generic/410 | 8 ++++----
tests/generic/411 | 8 ++++----
tests/generic/504 | 4 ++--
tests/generic/589 | 8 ++++----
tests/generic/631 | 2 +-
tests/generic/717 | 2 +-
tests/overlay/005 | 4 ++--
tests/overlay/025 | 2 +-
tests/overlay/062 | 2 +-
tests/overlay/083 | 6 +++---
tests/overlay/086 | 12 ++++++------
tests/xfs/044 | 2 +-
tests/xfs/049 | 8 ++++----
tests/xfs/149 | 4 ++--
tests/xfs/206 | 2 +-
tests/xfs/250 | 2 +-
tests/xfs/289 | 4 ++--
tests/xfs/300 | 2 +-
tests/xfs/507 | 2 +-
tests/xfs/544 | 2 +-
42 files changed, 75 insertions(+), 75 deletions(-)
diff --git a/common/btrfs b/common/btrfs
index c2d616aa26e4be..30288f07b61a3e 100644
--- a/common/btrfs
+++ b/common/btrfs
@@ -358,7 +358,7 @@ _btrfs_stress_subvolume()
mkdir -p $subvol_mnt
while [ ! -e $stop_file ]; do
$BTRFS_UTIL_PROG subvolume create $btrfs_mnt/$subvol_name
- $MOUNT_PROG -o subvol=$subvol_name $btrfs_dev $subvol_mnt
+ _mount -o subvol=$subvol_name $btrfs_dev $subvol_mnt
_unmount $subvol_mnt
$BTRFS_UTIL_PROG subvolume delete $btrfs_mnt/$subvol_name
done
@@ -444,7 +444,7 @@ _btrfs_stress_remount_compress()
local btrfs_mnt=$1
while true; do
for algo in no zlib lzo; do
- $MOUNT_PROG -o remount,compress=$algo $btrfs_mnt
+ _mount -o remount,compress=$algo $btrfs_mnt
done
done
}
diff --git a/common/dmdelay b/common/dmdelay
index 848afb993faa19..ff0b8adf8bfc72 100644
--- a/common/dmdelay
+++ b/common/dmdelay
@@ -22,7 +22,7 @@ _init_delay()
_mount_delay()
{
_scratch_options mount
- $MOUNT_PROG -t $FSTYP `_common_dev_mount_options` $SCRATCH_OPTIONS \
+ _mount -t $FSTYP `_common_dev_mount_options` $SCRATCH_OPTIONS \
$DELAY_DEV $SCRATCH_MNT
}
diff --git a/common/dmerror b/common/dmerror
index 309129c03c8d87..5c99fc1629b4ae 100644
--- a/common/dmerror
+++ b/common/dmerror
@@ -95,7 +95,7 @@ _dmerror_init()
_dmerror_mount()
{
_scratch_options mount
- $MOUNT_PROG -t $FSTYP `_common_dev_mount_options $*` $SCRATCH_OPTIONS \
+ _mount -t $FSTYP `_common_dev_mount_options $*` $SCRATCH_OPTIONS \
$DMERROR_DEV $SCRATCH_MNT
}
diff --git a/common/dmlogwrites b/common/dmlogwrites
index a27e1966a933a6..278656269584b3 100644
--- a/common/dmlogwrites
+++ b/common/dmlogwrites
@@ -104,7 +104,7 @@ _log_writes_mkfs()
_log_writes_mount()
{
_scratch_options mount
- $MOUNT_PROG -t $FSTYP `_common_dev_mount_options $*` $SCRATCH_OPTIONS \
+ _mount -t $FSTYP `_common_dev_mount_options $*` $SCRATCH_OPTIONS \
$LOGWRITES_DMDEV $SCRATCH_MNT
}
diff --git a/common/overlay b/common/overlay
index 67ae11f883ee68..d32f3219a5285a 100644
--- a/common/overlay
+++ b/common/overlay
@@ -29,13 +29,13 @@ _overlay_mount_dirs()
[ -n "$upperdir" ] && [ "$upperdir" != "-" ] && \
diropts+=",upperdir=$upperdir,workdir=$workdir"
- $MOUNT_PROG -t overlay $diropts `_common_dev_mount_options $*`
+ _mount -t overlay $diropts `_common_dev_mount_options $*`
}
# Mount with mnt/dev of scratch mount and custom mount options
_overlay_scratch_mount_opts()
{
- $MOUNT_PROG -t overlay $OVL_BASE_SCRATCH_MNT $SCRATCH_MNT $*
+ _mount -t overlay $OVL_BASE_SCRATCH_MNT $SCRATCH_MNT $*
}
# Mount with same options/mnt/dev of scratch mount, but optionally
@@ -130,7 +130,7 @@ _overlay_scratch_mount()
# By default, libmount merges remount options with old mount options.
# overlayfs does not support re-configuring the same mount options.
# We workaround this problem with --options-mode ignore.
- $MOUNT_PROG $SCRATCH_MNT --options-mode ignore $*
+ _mount $SCRATCH_MNT --options-mode ignore $*
return
fi
diff --git a/tests/btrfs/012 b/tests/btrfs/012
index 6914fba6ebe2cf..b3ca4190ecd117 100755
--- a/tests/btrfs/012
+++ b/tests/btrfs/012
@@ -41,7 +41,7 @@ export SELINUX_MOUNT_OPTIONS=""
$MKFS_EXT4_PROG -F -b $BLOCK_SIZE $SCRATCH_DEV > $seqres.full 2>&1 || \
_notrun "Could not create ext4 filesystem"
# Manual mount so we don't use -t btrfs or selinux context
-mount -t ext4 $SCRATCH_DEV $SCRATCH_MNT
+_mount -t ext4 $SCRATCH_DEV $SCRATCH_MNT
if [ $? -ne 0 -a $BLOCK_SIZE -gt $(_get_page_size) ]; then
_notrun "block size $BLOCK_SIZE is not supported by ext4"
fi
@@ -68,7 +68,7 @@ $E2FSCK_PROG -fn $SCRATCH_MNT/ext2_saved/image >> $seqres.full 2>&1 || \
# And the files in that image should match
mkdir -p $SCRATCH_MNT/mnt
-mount -o loop $SCRATCH_MNT/ext2_saved/image $SCRATCH_MNT/mnt || \
+_mount -o loop $SCRATCH_MNT/ext2_saved/image $SCRATCH_MNT/mnt || \
_fail "could not loop mount saved ext4 image"
echo "Checking saved ext2 image against the original one:"
@@ -90,7 +90,7 @@ $E2FSCK_PROG -fn $SCRATCH_DEV >> $seqres.full 2>&1 || \
_fail "restored ext4 image is corrupt"
# Mount the un-converted ext4 device & check the contents
-mount -t ext4 $SCRATCH_DEV $SCRATCH_MNT
+_mount -t ext4 $SCRATCH_DEV $SCRATCH_MNT
echo "Checking rolled back ext2 against the original one:"
$FSSUM_PROG -r $tmp.original $SCRATCH_MNT/$BASENAME
diff --git a/tests/btrfs/075 b/tests/btrfs/075
index 917993ca2da3a6..737c4ffdd57865 100755
--- a/tests/btrfs/075
+++ b/tests/btrfs/075
@@ -37,7 +37,7 @@ _scratch_mount
subvol_mnt=$TEST_DIR/$seq.mnt
mkdir -p $subvol_mnt
$BTRFS_UTIL_PROG subvolume create $SCRATCH_MNT/subvol >>$seqres.full 2>&1
-$MOUNT_PROG -o subvol=subvol $SELINUX_MOUNT_OPTIONS $SCRATCH_DEV $subvol_mnt
+_mount -o subvol=subvol $SELINUX_MOUNT_OPTIONS $SCRATCH_DEV $subvol_mnt
status=$?
exit
diff --git a/tests/btrfs/089 b/tests/btrfs/089
index 8f8e37b6fde87b..9e8d8ea3a5e097 100755
--- a/tests/btrfs/089
+++ b/tests/btrfs/089
@@ -29,7 +29,7 @@ $BTRFS_UTIL_PROG subvolume set-default $testvol_id "$SCRATCH_MNT" >>$seqres.full
# Bind-mount a directory under the default subvolume.
mkdir "$SCRATCH_MNT/testvol/testdir"
mkdir "$SCRATCH_MNT/testvol/mnt"
-mount --bind "$SCRATCH_MNT/testvol/testdir" "$SCRATCH_MNT/testvol/mnt"
+_mount --bind "$SCRATCH_MNT/testvol/testdir" "$SCRATCH_MNT/testvol/mnt"
# Now attempt to delete the default subvolume.
$BTRFS_UTIL_PROG subvolume delete "$SCRATCH_MNT/testvol" >>$seqres.full 2>&1
diff --git a/tests/btrfs/136 b/tests/btrfs/136
index fd24d3f8c1fa45..97c110981adebb 100755
--- a/tests/btrfs/136
+++ b/tests/btrfs/136
@@ -44,7 +44,7 @@ $MKFS_EXT4_PROG -F -t ext3 -b $BLOCK_SIZE $SCRATCH_DEV > $seqres.full 2>&1 || \
_notrun "Could not create ext3 filesystem"
# mount and populate non-extent file
-mount -t ext3 $SCRATCH_DEV $SCRATCH_MNT
+_mount -t ext3 $SCRATCH_DEV $SCRATCH_MNT
if [ $? -ne 0 -a $BLOCK_SIZE -gt $(_get_page_size) ]; then
_notrun "block size $BLOCK_SIZE is not supported by ext3"
fi
@@ -57,7 +57,7 @@ $TUNE2FS_PROG -O extents,uninit_bg,dir_index $SCRATCH_DEV >> $seqres.full 2>&1
$E2FSCK_PROG -fyD $SCRATCH_DEV >> $seqres.full 2>&1
# mount and populate extent file
-mount -t ext4 $SCRATCH_DEV $SCRATCH_MNT
+_mount -t ext4 $SCRATCH_DEV $SCRATCH_MNT
populate_data "$SCRATCH_MNT/ext3_ext4_data/ext4"
# Compute md5 of ext3,ext4 files.
diff --git a/tests/btrfs/208 b/tests/btrfs/208
index 5ea732ae8f71a7..93a999541dab06 100755
--- a/tests/btrfs/208
+++ b/tests/btrfs/208
@@ -45,7 +45,7 @@ _scratch_unmount
# Now we mount the subvol2, which makes subvol3 not accessible for this mount
# point, but we should be able to delete it using it's subvolume id
-$MOUNT_PROG -o subvol=subvol2 $SCRATCH_DEV $SCRATCH_MNT
+_mount -o subvol=subvol2 $SCRATCH_DEV $SCRATCH_MNT
_delete_and_list subvol3 "Last remaining subvolume:"
_scratch_unmount
diff --git a/tests/btrfs/330 b/tests/btrfs/330
index 3a311a5affc0a0..10c4466707f3a3 100755
--- a/tests/btrfs/330
+++ b/tests/btrfs/330
@@ -17,7 +17,7 @@ _cleanup()
# Import common functions.
. ./common/filter.btrfs
-$MOUNT_PROG -V | grep -q 'fd-based-mount'
+_mount -V | grep -q 'fd-based-mount'
if [ "$?" -eq 0 ]; then
_fixed_by_kernel_commit cda7163d4e3d \
"btrfs: fix per-subvolume RO/RW flags with new mount API"
diff --git a/tests/btrfs/335 b/tests/btrfs/335
index 34764e4aa6c8c1..edc5c0ab3374b8 100755
--- a/tests/btrfs/335
+++ b/tests/btrfs/335
@@ -49,7 +49,7 @@ $BTRFS_UTIL_PROG balance start -mconvert=raid1 $SCRATCH_MNT 2>&1 |\
_scratch_unmount
-$MOUNT_PROG -t btrfs -odegraded ${devs[0]} $SCRATCH_MNT
+_mount -t btrfs -odegraded ${devs[0]} $SCRATCH_MNT
$BTRFS_UTIL_PROG device remove --force missing $SCRATCH_MNT >> $seqres.full
$BTRFS_UTIL_PROG balance start --full-balance $SCRATCH_MNT >> $seqres.full
diff --git a/tests/ext4/032 b/tests/ext4/032
index 043ae4f5350530..ef050ec0fb421c 100755
--- a/tests/ext4/032
+++ b/tests/ext4/032
@@ -48,7 +48,7 @@ ext4_online_resize()
$seqres.full 2>&1 || _fail "mkfs failed"
echo "+++ mount image file" | tee -a $seqres.full
- $MOUNT_PROG -t ${FSTYP} ${LOOP_DEVICE} ${IMG_MNT} > \
+ _mount -t ${FSTYP} ${LOOP_DEVICE} ${IMG_MNT} > \
/dev/null 2>&1 || _fail "mount failed"
echo "+++ resize fs to $final_size" | tee -a $seqres.full
diff --git a/tests/generic/067 b/tests/generic/067
index b45ae834f918d2..99d10ee0be0a0f 100755
--- a/tests/generic/067
+++ b/tests/generic/067
@@ -34,7 +34,7 @@ mount_nonexistent_mnt()
{
echo "# mount to nonexistent mount point" >>$seqres.full
rm -rf $TEST_DIR/nosuchdir
- $MOUNT_PROG $SCRATCH_DEV $TEST_DIR/nosuchdir >>$seqres.full 2>&1
+ _mount $SCRATCH_DEV $TEST_DIR/nosuchdir >>$seqres.full 2>&1
}
# fs driver should be able to handle mounting a free loop device gracefully xfs
@@ -60,7 +60,7 @@ mount_wrong_fstype()
fs=xfs
fi
echo "# mount with wrong fs type" >>$seqres.full
- $MOUNT_PROG -t $fs $SCRATCH_DEV $SCRATCH_MNT >>$seqres.full 2>&1
+ _mount -t $fs $SCRATCH_DEV $SCRATCH_MNT >>$seqres.full 2>&1
}
# umount a symlink to device, which is not mounted.
diff --git a/tests/generic/089 b/tests/generic/089
index 89c19484fd7b8a..9998457fb5baf1 100755
--- a/tests/generic/089
+++ b/tests/generic/089
@@ -34,7 +34,7 @@ cd $TEST_DIR
rm -fr test
mkdir test || exit 1
cd $TEST_DIR/test
-mount > t_mtab
+_mount > t_mtab
mtab()
{
diff --git a/tests/generic/120 b/tests/generic/120
index 7527bd4a078423..d11b90b809f240 100755
--- a/tests/generic/120
+++ b/tests/generic/120
@@ -29,7 +29,7 @@ _compare_access_times()
cat $tmp.out
echo "---------------------------------------------------"
$here/src/lstat64 $1
- mount | grep $SCRATCH_MNT
+ _mount | grep $SCRATCH_MNT
fi
}
diff --git a/tests/generic/306 b/tests/generic/306
index 8e118472d8bef0..14c07e0bda4afa 100755
--- a/tests/generic/306
+++ b/tests/generic/306
@@ -66,7 +66,7 @@ $XFS_IO_PROG -f -c "pwrite 0 512" $SYMLINK | _filter_xfs_io
$XFS_IO_PROG -t -c "pwrite 0 512" $SYMLINK | _filter_xfs_io
echo "== write to bind-mounted rw file on ro fs"
-mount --bind $TARGET $BINDFILE
+_mount --bind $TARGET $BINDFILE
# with and without -f (adds O_CREAT)
$XFS_IO_PROG -c "pwrite 0 512" $BINDFILE | _filter_xfs_io
$XFS_IO_PROG -f -c "pwrite 0 512" $BINDFILE | _filter_xfs_io
diff --git a/tests/generic/361 b/tests/generic/361
index b584af47540020..70dba3a0ca8b75 100755
--- a/tests/generic/361
+++ b/tests/generic/361
@@ -52,7 +52,7 @@ fi
$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
+_mount -o remount,ro $fs_mnt >>$seqres.full 2>&1
_unmount $fs_mnt &>/dev/null
_destroy_loop_device $loop_dev
diff --git a/tests/generic/373 b/tests/generic/373
index 04ec642518ce70..42bdc1be0757ac 100755
--- a/tests/generic/373
+++ b/tests/generic/373
@@ -42,7 +42,7 @@ blksz=65536
sz=$((blksz * blocks))
echo "Mount otherdir"
-$MOUNT_PROG --bind $SCRATCH_MNT $otherdir
+_mount --bind $SCRATCH_MNT $otherdir
echo "Create file"
_pwrite_byte 0x61 0 $sz $testdir/file >> $seqres.full
diff --git a/tests/generic/374 b/tests/generic/374
index 9a85091e29886e..8f7d17152c84be 100755
--- a/tests/generic/374
+++ b/tests/generic/374
@@ -41,7 +41,7 @@ blksz=65536
sz=$((blocks * blksz))
echo "Mount otherdir"
-$MOUNT_PROG --bind $SCRATCH_MNT $otherdir
+_mount --bind $SCRATCH_MNT $otherdir
echo "Create file"
_pwrite_byte 0x61 0 $sz $testdir/file >> $seqres.full
diff --git a/tests/generic/395 b/tests/generic/395
index f9c331adb969ac..261f468f397c8c 100755
--- a/tests/generic/395
+++ b/tests/generic/395
@@ -71,8 +71,8 @@ _scratch_remount ro
_set_encpolicy $SCRATCH_MNT/ro_dir |& _filter_scratch
_get_encpolicy $SCRATCH_MNT/ro_dir |& _filter_scratch
_scratch_remount rw
-mount --bind $SCRATCH_MNT $SCRATCH_MNT/ro_bind_mnt
-mount -o remount,ro,bind $SCRATCH_MNT/ro_bind_mnt
+_mount --bind $SCRATCH_MNT $SCRATCH_MNT/ro_bind_mnt
+_mount -o remount,ro,bind $SCRATCH_MNT/ro_bind_mnt
_set_encpolicy $SCRATCH_MNT/ro_bind_mnt/ro_dir |& _filter_scratch
_get_encpolicy $SCRATCH_MNT/ro_bind_mnt/ro_dir |& _filter_scratch
_unmount $SCRATCH_MNT/ro_bind_mnt
diff --git a/tests/generic/409 b/tests/generic/409
index ac1b14ad60f723..eff7c3584b413b 100755
--- a/tests/generic/409
+++ b/tests/generic/409
@@ -88,7 +88,7 @@ start_test()
_scratch_mkfs >$seqres.full 2>&1
_get_mount -t $FSTYP $SCRATCH_DEV $MNTHEAD
- $MOUNT_PROG --make-"${type}" $MNTHEAD
+ _mount --make-"${type}" $MNTHEAD
mkdir $mpA $mpB $mpC $mpD
}
@@ -108,9 +108,9 @@ bind_run()
echo "bind $source on $dest"
_get_mount -t $FSTYP $SCRATCH_DEV $mpA
mkdir -p $mpA/dir 2>/dev/null
- $MOUNT_PROG --make-shared $mpA
+ _mount --make-shared $mpA
_get_mount --bind $mpA $mpB
- $MOUNT_PROG --make-"$source" $mpB
+ _mount --make-"$source" $mpB
# maybe unbindable at here
_get_mount --bind $mpB $mpC 2>/dev/null
if [ $? -ne 0 ]; then
diff --git a/tests/generic/410 b/tests/generic/410
index e0d0c57eba2950..69f9dbe97f182d 100755
--- a/tests/generic/410
+++ b/tests/generic/410
@@ -94,7 +94,7 @@ start_test()
_scratch_mkfs >>$seqres.full 2>&1
_get_mount -t $FSTYP $SCRATCH_DEV $MNTHEAD
- $MOUNT_PROG --make-"${type}" $MNTHEAD
+ _mount --make-"${type}" $MNTHEAD
mkdir $mpA $mpB $mpC
}
@@ -118,14 +118,14 @@ run()
echo "make-$cmd a $orgs mount"
_get_mount -t $FSTYP $SCRATCH_DEV $mpA
mkdir -p $mpA/dir 2>/dev/null
- $MOUNT_PROG --make-shared $mpA
+ _mount --make-shared $mpA
# prepare the original status on mpB
_get_mount --bind $mpA $mpB
# shared&slave status need to do make-slave then make-shared
# two operations.
for t in $orgs; do
- $MOUNT_PROG --make-"$t" $mpB
+ _mount --make-"$t" $mpB
done
# "before" for prepare and check original status
@@ -146,7 +146,7 @@ run()
_put_mount # umount C
fi
if [ "$i" = "before" ];then
- $MOUNT_PROG --make-"${cmd}" $mpB
+ _mount --make-"${cmd}" $mpB
fi
done
diff --git a/tests/generic/411 b/tests/generic/411
index 0a80554cd4d3b9..b099940f3fa704 100755
--- a/tests/generic/411
+++ b/tests/generic/411
@@ -77,7 +77,7 @@ start_test()
_scratch_mkfs >$seqres.full 2>&1
_get_mount -t $FSTYP $SCRATCH_DEV $MNTHEAD
- $MOUNT_PROG --make-"${type}" $MNTHEAD
+ _mount --make-"${type}" $MNTHEAD
mkdir $mpA $mpB $mpC
}
@@ -100,11 +100,11 @@ crash_test()
_get_mount -t $FSTYP $SCRATCH_DEV $mpA
mkdir $mpA/mnt1
- $MOUNT_PROG --make-shared $mpA
+ _mount --make-shared $mpA
_get_mount --bind $mpA $mpB
_get_mount --bind $mpA $mpC
- $MOUNT_PROG --make-slave $mpB
- $MOUNT_PROG --make-slave $mpC
+ _mount --make-slave $mpB
+ _mount --make-slave $mpC
_get_mount -t $FSTYP $SCRATCH_DEV $mpA/mnt1
mkdir $mpA/mnt1/mnt2
diff --git a/tests/generic/504 b/tests/generic/504
index 611e6c283e215a..931f231504b702 100755
--- a/tests/generic/504
+++ b/tests/generic/504
@@ -41,7 +41,7 @@ exec {test_fd}> $testfile
if [ "$FSTESTS_ISOL" = "privatens" ]; then
move_proc="$tmp.procdir"
mkdir -p "$move_proc"
- mount --move /proc "$move_proc"
+ _mount --move /proc "$move_proc"
fi
flock -x $test_fd
cat /proc/locks >> $seqres.full
@@ -50,7 +50,7 @@ cat /proc/locks >> $seqres.full
grep -q ":$tf_inode " /proc/locks || echo "lock info not found"
if [ -n "$move_proc" ]; then
- mount --move "$move_proc" /proc
+ _mount --move "$move_proc" /proc
fi
# success, all done
diff --git a/tests/generic/589 b/tests/generic/589
index 0384083bbf4251..e7627f26c75996 100755
--- a/tests/generic/589
+++ b/tests/generic/589
@@ -81,12 +81,12 @@ start_test()
_get_mount -t $FSTYP $SCRATCH_DEV $SRCHEAD
# make sure $SRCHEAD is private
- $MOUNT_PROG --make-private $SRCHEAD
+ _mount --make-private $SRCHEAD
_get_mount -t $FSTYP $SCRATCH_DEV $DSTHEAD
# test start with a bind, then make-shared $DSTHEAD
_get_mount --bind $DSTHEAD $DSTHEAD
- $MOUNT_PROG --make-"${type}" $DSTHEAD
+ _mount --make-"${type}" $DSTHEAD
mkdir $mpA $mpB $mpC $mpD
}
@@ -106,10 +106,10 @@ move_run()
echo "move $source to $dest"
_get_mount -t $FSTYP $SCRATCH_DEV $mpA
mkdir -p $mpA/dir 2>/dev/null
- $MOUNT_PROG --make-shared $mpA
+ _mount --make-shared $mpA
# need a peer for slave later
_get_mount --bind $mpA $mpB
- $MOUNT_PROG --make-"$source" $mpB
+ _mount --make-"$source" $mpB
# maybe unbindable at here
_get_mount --move $mpB $mpC 2>/dev/null
if [ $? -ne 0 ]; then
diff --git a/tests/generic/631 b/tests/generic/631
index 8b12b8f247ee81..96e917e8c25314 100755
--- a/tests/generic/631
+++ b/tests/generic/631
@@ -80,7 +80,7 @@ worker() {
mkdir $SCRATCH_MNT/workdir$tag
mkdir $SCRATCH_MNT/upperdir$tag
- mount -t overlay overlay -o "$l,$u,$w,$i" $mergedir
+ _mount -t overlay overlay -o "$l,$u,$w,$i" $mergedir
mv $mergedir/etc/access.conf $mergedir/etc/access.conf.bak
touch $mergedir/etc/access.conf
mv $mergedir/etc/access.conf $mergedir/etc/access.conf.bak
diff --git a/tests/generic/717 b/tests/generic/717
index 2ecd2888d4590e..acbe787c5e42c1 100755
--- a/tests/generic/717
+++ b/tests/generic/717
@@ -82,7 +82,7 @@ $XFS_IO_PROG -c "exchangerange $SCRATCH_MNT/c" $dir/a
echo Files on different mounts
mkdir -p $SCRATCH_MNT/xyz
-mount --bind $dir $SCRATCH_MNT/xyz --bind
+_mount --bind $dir $SCRATCH_MNT/xyz --bind
_pwrite_byte 0x60 0 $((blksz * (nrblks + 2))) $dir/c >> $seqres.full
$XFS_IO_PROG -c "exchangerange $SCRATCH_MNT/xyz/c" $dir/a
_unmount $SCRATCH_MNT/xyz
diff --git a/tests/overlay/005 b/tests/overlay/005
index d396b5cb213048..809154d9c66caa 100755
--- a/tests/overlay/005
+++ b/tests/overlay/005
@@ -51,8 +51,8 @@ $MKFS_XFS_PROG -f -n ftype=1 $upper_loop_dev >>$seqres.full 2>&1
# mount underlying xfs
mkdir -p ${OVL_BASE_SCRATCH_MNT}/lowermnt
mkdir -p ${OVL_BASE_SCRATCH_MNT}/uppermnt
-$MOUNT_PROG $fs_loop_dev ${OVL_BASE_SCRATCH_MNT}/lowermnt
-$MOUNT_PROG $upper_loop_dev ${OVL_BASE_SCRATCH_MNT}/uppermnt
+_mount $fs_loop_dev ${OVL_BASE_SCRATCH_MNT}/lowermnt
+_mount $upper_loop_dev ${OVL_BASE_SCRATCH_MNT}/uppermnt
# prepare dirs
mkdir -p ${OVL_BASE_SCRATCH_MNT}/lowermnt/lower
diff --git a/tests/overlay/025 b/tests/overlay/025
index dc819a39348b69..6ba46191b557be 100755
--- a/tests/overlay/025
+++ b/tests/overlay/025
@@ -36,7 +36,7 @@ _require_extra_fs tmpfs
# create a tmpfs in $TEST_DIR
tmpfsdir=$TEST_DIR/tmpfs
mkdir -p $tmpfsdir
-$MOUNT_PROG -t tmpfs tmpfs $tmpfsdir
+_mount -t tmpfs tmpfs $tmpfsdir
mkdir -p $tmpfsdir/{lower,upper,work,mnt}
mkdir -p -m 0 $tmpfsdir/upper/testd
diff --git a/tests/overlay/062 b/tests/overlay/062
index e44628b7459bfb..9a1db7419c4ca2 100755
--- a/tests/overlay/062
+++ b/tests/overlay/062
@@ -60,7 +60,7 @@ lowertestdir=$lower2/testdir
create_test_files $lowertestdir
# bind mount to pin lower test dir dentry to dcache
-$MOUNT_PROG --bind $lowertestdir $lowertestdir
+_mount --bind $lowertestdir $lowertestdir
# For non-upper overlay mount, nfs_export requires disabling redirect_dir.
_overlay_scratch_mount_opts \
diff --git a/tests/overlay/083 b/tests/overlay/083
index d037d4c858e6a6..56e02f8cc77d73 100755
--- a/tests/overlay/083
+++ b/tests/overlay/083
@@ -40,14 +40,14 @@ mkdir -p "$lowerdir_spaces" "$lowerdir_colons" "$lowerdir_commas"
# _overlay_mount_* helpers do not handle special chars well, so execute mount directly.
# if escaped colons are not parsed correctly, mount will fail.
-$MOUNT_PROG -t overlay ovl_esc_test $SCRATCH_MNT \
+_mount -t overlay ovl_esc_test $SCRATCH_MNT \
-o"upperdir=$upperdir,workdir=$workdir" \
-o"lowerdir=$lowerdir_colons_esc:$lowerdir_spaces" \
2>&1 | tee -a $seqres.full
# if spaces are not escaped when showing mount options,
# mount command will not show the word 'spaces' after the spaces
-$MOUNT_PROG -t overlay | grep ovl_esc_test | tee -a $seqres.full | grep -v spaces && \
+_mount -t overlay | grep ovl_esc_test | tee -a $seqres.full | grep -v spaces && \
echo "ERROR: escaped spaces truncated from lowerdir mount option"
# Re-create the upper/work dirs to mount them with a different lower
@@ -65,7 +65,7 @@ mkdir -p "$upperdir" "$workdir"
# and this test will fail, but the failure would indicate a libmount issue, not
# a kernel issue. Therefore, force libmount to use mount(2) syscall, so we only
# test the kernel fix.
-LIBMOUNT_FORCE_MOUNT2=always $MOUNT_PROG -t overlay $OVL_BASE_SCRATCH_DEV $SCRATCH_MNT \
+LIBMOUNT_FORCE_MOUNT2=always _mount -t overlay $OVL_BASE_SCRATCH_DEV $SCRATCH_MNT \
-o"upperdir=$upperdir,workdir=$workdir,lowerdir=$lowerdir_commas_esc" 2>> $seqres.full || \
echo "ERROR: incorrect parsing of escaped comma in lowerdir mount option"
diff --git a/tests/overlay/086 b/tests/overlay/086
index 9c8a00588595f6..23c56d074ff34a 100755
--- a/tests/overlay/086
+++ b/tests/overlay/086
@@ -33,21 +33,21 @@ mkdir -p "$lowerdir_spaces" "$lowerdir_colons"
# _overlay_mount_* helpers do not handle lowerdir+,datadir+, so execute mount directly.
# check illegal combinations and order of lowerdir,lowerdir+,datadir+
-$MOUNT_PROG -t overlay none $SCRATCH_MNT \
+_mount -t overlay none $SCRATCH_MNT \
-o"lowerdir=$lowerdir,lowerdir+=$lowerdir_colons" \
2>> $seqres.full && \
echo "ERROR: invalid combination of lowerdir and lowerdir+ mount options"
$UMOUNT_PROG $SCRATCH_MNT 2>/dev/null
-$MOUNT_PROG -t overlay none $SCRATCH_MNT \
+_mount -t overlay none $SCRATCH_MNT \
-o"lowerdir=$lowerdir,datadir+=$lowerdir_colons" \
-o redirect_dir=follow,metacopy=on 2>> $seqres.full && \
echo "ERROR: invalid combination of lowerdir and datadir+ mount options"
$UMOUNT_PROG $SCRATCH_MNT 2>/dev/null
-$MOUNT_PROG -t overlay none $SCRATCH_MNT \
+_mount -t overlay none $SCRATCH_MNT \
-o"datadir+=$lowerdir,lowerdir+=$lowerdir_colons" \
-o redirect_dir=follow,metacopy=on 2>> $seqres.full && \
echo "ERROR: invalid order of lowerdir+ and datadir+ mount options"
@@ -55,7 +55,7 @@ $MOUNT_PROG -t overlay none $SCRATCH_MNT \
$UMOUNT_PROG $SCRATCH_MNT 2>/dev/null
# mount is expected to fail with escaped colons.
-$MOUNT_PROG -t overlay none $SCRATCH_MNT \
+_mount -t overlay none $SCRATCH_MNT \
-o"lowerdir+=$lowerdir_colons_esc" \
2>> $seqres.full && \
echo "ERROR: incorrect parsing of escaped colons in lowerdir+ mount option"
@@ -63,14 +63,14 @@ $MOUNT_PROG -t overlay none $SCRATCH_MNT \
$UMOUNT_PROG $SCRATCH_MNT 2>/dev/null
# mount is expected to succeed without escaped colons.
-$MOUNT_PROG -t overlay ovl_esc_test $SCRATCH_MNT \
+_mount -t overlay ovl_esc_test $SCRATCH_MNT \
-o"lowerdir+=$lowerdir_colons,datadir+=$lowerdir_spaces" \
-o redirect_dir=follow,metacopy=on \
2>&1 | tee -a $seqres.full
# if spaces are not escaped when showing mount options,
# mount command will not show the word 'spaces' after the spaces
-$MOUNT_PROG -t overlay | grep ovl_esc_test | tee -a $seqres.full | \
+_mount -t overlay | grep ovl_esc_test | tee -a $seqres.full | \
grep -q 'datadir+'.*spaces || \
echo "ERROR: escaped spaces truncated from datadir+ mount option"
diff --git a/tests/xfs/044 b/tests/xfs/044
index 3ecb3479302e22..e8280f382ae3b6 100755
--- a/tests/xfs/044
+++ b/tests/xfs/044
@@ -49,7 +49,7 @@ _check_no_mount()
_check_require_logdev()
{
echo " *** mount without logdev (expect failure)"
- if mount -t xfs $SCRATCH_DEV $SCRATCH_MNT >$tmp.err 2>&1
+ if _mount -t xfs $SCRATCH_DEV $SCRATCH_MNT >$tmp.err 2>&1
then
cat $tmp.err
echo " !!! mount succeeded (expecting failure)"
diff --git a/tests/xfs/049 b/tests/xfs/049
index a3f478fa9351ab..64667a0d8baab2 100755
--- a/tests/xfs/049
+++ b/tests/xfs/049
@@ -21,7 +21,7 @@ _cleanup()
if [ -w $seqres.full ]; then
echo "--- mounts at end (after cleanup)" >> $seqres.full
- mount >> $seqres.full
+ _mount >> $seqres.full
fi
}
@@ -47,14 +47,14 @@ echo "(dev=$SCRATCH_DEV, mount=$SCRATCH_MNT)" >> $seqres.full
echo "" >> $seqres.full
echo "--- mounts" >> $seqres.full
-mount >> $seqres.full
+_mount >> $seqres.full
_log "Create ext2 fs on scratch"
mkfs -t ext2 -F $SCRATCH_DEV >> $seqres.full 2>&1 \
|| _fail "!!! failed to mkfs ext2"
_log "Mount ext2 fs on scratch"
-mount -t ext2 $SCRATCH_DEV $SCRATCH_MNT >> $seqres.full 2>&1 \
+_mount -t ext2 $SCRATCH_DEV $SCRATCH_MNT >> $seqres.full 2>&1 \
|| _fail "!!! failed to mount"
_log "Create xfs fs in file on scratch"
@@ -114,7 +114,7 @@ _destroy_loop_device $loop_dev1
unset loop_dev1
echo "--- mounts at end (before cleanup)" >> $seqres.full
-mount >> $seqres.full
+_mount >> $seqres.full
# success, all done
status=0
diff --git a/tests/xfs/149 b/tests/xfs/149
index 28dfc7f04c1773..baf6e22b98e289 100755
--- a/tests/xfs/149
+++ b/tests/xfs/149
@@ -64,7 +64,7 @@ $XFS_GROWFS_PROG $loop_symlink 2>&1 | sed -e s:$loop_symlink:LOOPSYMLINK:
# These mounted operations should pass
echo "=== mount ==="
-$MOUNT_PROG $loop_dev $mntdir || _fail "!!! failed to loopback mount"
+_mount $loop_dev $mntdir || _fail "!!! failed to loopback mount"
echo "=== xfs_growfs - check device node ==="
$XFS_GROWFS_PROG -D 8192 $loop_dev > /dev/null
@@ -76,7 +76,7 @@ echo "=== unmount ==="
_unmount $mntdir || _fail "!!! failed to unmount"
echo "=== mount device symlink ==="
-$MOUNT_PROG $loop_symlink $mntdir || _fail "!!! failed to loopback mount"
+_mount $loop_symlink $mntdir || _fail "!!! failed to loopback mount"
echo "=== xfs_growfs - check device symlink ==="
$XFS_GROWFS_PROG -D 16384 $loop_symlink > /dev/null
diff --git a/tests/xfs/206 b/tests/xfs/206
index bfd2dee939ddd7..a515c6c8838cff 100755
--- a/tests/xfs/206
+++ b/tests/xfs/206
@@ -75,7 +75,7 @@ echo "=== mkfs.xfs ==="
mkfs.xfs -f -bsize=4096 -l size=32m -dagsize=76288719b,size=3905982455b \
$tmpfile | mkfs_filter
-mount -o loop $tmpfile $tmpdir || _fail "!!! failed to loopback mount"
+_mount -o loop $tmpfile $tmpdir || _fail "!!! failed to loopback mount"
# see what happens when we growfs it
echo "=== xfs_growfs ==="
diff --git a/tests/xfs/250 b/tests/xfs/250
index 2554e1e91c4c6f..0c3f6f075c1cb2 100755
--- a/tests/xfs/250
+++ b/tests/xfs/250
@@ -57,7 +57,7 @@ _test_loop()
echo "*** mount loop filesystem"
loop_dev=$(_create_loop_device $LOOP_IMG)
- mount $loop_dev $LOOP_MNT
+ _mount $loop_dev $LOOP_MNT
echo "*** preallocate large file"
$XFS_IO_PROG -f -c "resvsp 0 $fsize" $LOOP_MNT/foo | _filter_io
diff --git a/tests/xfs/289 b/tests/xfs/289
index d234f212d49b83..c2216f2826a9d1 100755
--- a/tests/xfs/289
+++ b/tests/xfs/289
@@ -56,7 +56,7 @@ echo "=== xfs_growfs - plain file - should be rejected ==="
$XFS_GROWFS_PROG $tmpfile 2>&1 | _filter_test_dir
echo "=== mount ==="
-$MOUNT_PROG -o loop $tmpfile $tmpdir || _fail "!!! failed to loopback mount"
+_mount -o loop $tmpfile $tmpdir || _fail "!!! failed to loopback mount"
echo "=== xfs_growfs - mounted - check absolute path ==="
$XFS_GROWFS_PROG -D 8192 $tmpdir | _filter_test_dir > /dev/null
@@ -79,7 +79,7 @@ $XFS_GROWFS_PROG -D 28672 tmpsymlink.$$ > /dev/null
echo "=== xfs_growfs - bind mount ==="
mkdir $tmpbind
-$MOUNT_PROG -o bind $tmpdir $tmpbind
+_mount -o bind $tmpdir $tmpbind
$XFS_GROWFS_PROG -D 32768 $tmpbind | _filter_test_dir > /dev/null
echo "=== xfs_growfs - bind mount - relative path ==="
diff --git a/tests/xfs/300 b/tests/xfs/300
index c4c3b1ab86c200..534a0e9d059b91 100755
--- a/tests/xfs/300
+++ b/tests/xfs/300
@@ -27,7 +27,7 @@ getenforce | grep -q "Enforcing\|Permissive" || _notrun "SELinux not enabled"
_scratch_mkfs_xfs -m crc=0 -i size=256 >> $seqres.full 2>&1
# Manually mount to avoid fs-wide context set by default in xfstests
-mount $SCRATCH_DEV $SCRATCH_MNT
+_mount $SCRATCH_DEV $SCRATCH_MNT
touch $SCRATCH_MNT/$seq.test
diff --git a/tests/xfs/507 b/tests/xfs/507
index 52d9b94b4dd903..e1450f4f8f9495 100755
--- a/tests/xfs/507
+++ b/tests/xfs/507
@@ -86,7 +86,7 @@ loop_dev=$(_create_loop_device $loop_file)
_mkfs_dev -d cowextsize=$MAXEXTLEN -l size=256m $loop_dev >> $seqres.full
mkdir $loop_mount
-mount $loop_dev $loop_mount
+_mount $loop_dev $loop_mount
echo "Create crazy huge file"
huge_file="$loop_mount/a"
diff --git a/tests/xfs/544 b/tests/xfs/544
index b7eef51c7fddbe..9e4e0d255bd3c9 100755
--- a/tests/xfs/544
+++ b/tests/xfs/544
@@ -35,7 +35,7 @@ mkdir $TEST_DIR/dest.$seq
# Test
echo "*** dump with bind-mounted test ***" >> $seqres.full
-$MOUNT_PROG --bind $TEST_DIR/src.$seq $TEST_DIR/dest.$seq || _fail "Bind mount failed"
+_mount --bind $TEST_DIR/src.$seq $TEST_DIR/dest.$seq || _fail "Bind mount failed"
$XFSDUMP_PROG -L session -M test -f $tmp.dump $TEST_DIR/dest.$seq \
>> $seqres.full 2>&1 && echo "dump with bind-mounted should be failed, but passed."
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 2/2] check: capture dmesg of mount failures if test fails
2026-04-13 17:50 [PATCHSET 2/2] fstests: capture logs from mount failures Darrick J. Wong
2026-04-13 17:51 ` [PATCH 1/2] treewide: convert all $MOUNT_PROG to _mount Darrick J. Wong
@ 2026-04-13 17:51 ` Darrick J. Wong
2026-04-14 7:59 ` Christoph Hellwig
` (2 more replies)
1 sibling, 3 replies; 13+ messages in thread
From: Darrick J. Wong @ 2026-04-13 17:51 UTC (permalink / raw)
To: zlang, djwong; +Cc: linux-xfs, fstests
From: Darrick J. Wong <djwong@kernel.org>
Capture the kernel output after a mount failure occurs. If the test
itself fails, then keep the logging output for further diagnosis.
Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
---
check | 22 +++++++++++++++++++++-
common/rc | 26 +++++++++++++++++++++++++-
common/report | 8 ++++++++
doc/xunit.xsd | 12 +++++++++++-
tests/selftest/008 | 20 ++++++++++++++++++++
tests/selftest/008.out | 1 +
6 files changed, 86 insertions(+), 3 deletions(-)
create mode 100755 tests/selftest/008
create mode 100644 tests/selftest/008.out
diff --git a/check b/check
index cd7a79347eac28..c37921ea58e558 100755
--- a/check
+++ b/check
@@ -608,7 +608,7 @@ _stash_fail_loop_files() {
local seq_prefix="${REPORT_DIR}/${1}"
local cp_suffix="$2"
- for i in ".full" ".dmesg" ".out.bad" ".notrun" ".core" ".hints"; do
+ for i in ".full" ".dmesg" ".out.bad" ".notrun" ".core" ".hints" ".mountfail"; do
rm -f "${seq_prefix}${i}${cp_suffix}"
if [ -f "${seq_prefix}${i}" ]; then
cp "${seq_prefix}${i}" "${seq_prefix}${i}${cp_suffix}"
@@ -982,6 +982,7 @@ function run_section()
echo -n " $seqnum -- "
cat $seqres.notrun
tc_status="notrun"
+ rm -f "$seqres.mountfail?"
_stash_test_status "$seqnum" "$tc_status"
# Unmount the scratch fs so that we can wipe the scratch
@@ -1045,6 +1046,7 @@ function run_section()
if [ ! -f $seq.out ]; then
_dump_err "no qualified output"
tc_status="fail"
+ rm -f "$seqres.mountfail?"
_stash_test_status "$seqnum" "$tc_status"
continue;
fi
@@ -1081,6 +1083,24 @@ function run_section()
rm -f $seqres.hints
fi
fi
+
+ if [ -f "$seqres.mountfail?" ]; then
+ if [ "$tc_status" = "fail" ]; then
+ # Let the user know if there were mount
+ # failures on a test that failed because that
+ # could be interesting.
+ mv "$seqres.mountfail?" "$seqres.mountfail"
+ _dump_err "check: possible mount failures (see $seqres.mountfail)"
+ test -f $seqres.mountfail && \
+ maybe_compress_logfile $seqres.mountfail $MAX_MOUNTFAIL_SIZE
+ else
+ # Don't retain mount failure logs for tests
+ # that pass or were skipped because some tests
+ # intentionally drive mount failures.
+ rm -f "$seqres.mountfail?"
+ fi
+ fi
+
_stash_test_status "$seqnum" "$tc_status"
done
diff --git a/common/rc b/common/rc
index 5fe44e2158ffb3..18ceda1b32cd63 100644
--- a/common/rc
+++ b/common/rc
@@ -288,9 +288,33 @@ _get_hugepagesize()
awk '/Hugepagesize/ {print $2 * 1024}' /proc/meminfo
}
+# Does dmesg have a --since flag?
+_dmesg_detect_since()
+{
+ if [ -z "$DMESG_HAS_SINCE" ]; then
+ test "$DMESG_HAS_SINCE" = "yes"
+ return
+ elif dmesg --help | grep -q -- --since; then
+ DMESG_HAS_SINCE=yes
+ else
+ DMESG_HAS_SINCE=no
+ fi
+}
+
_mount()
{
- $MOUNT_PROG $*
+ $MOUNT_PROG $*
+ ret=$?
+ if [ "$ret" -ne 0 ]; then
+ echo "\"$MOUNT_PROG $*\" failed at $(date)" >> "$seqres.mountfail?"
+ if _dmesg_detect_since; then
+ dmesg --since '30s ago' >> "$seqres.mountfail?"
+ else
+ dmesg | tail -n 100 >> "$seqres.mountfail?"
+ fi
+ fi
+
+ return $ret
}
# Call _mount to do mount operation but also save mountpoint to
diff --git a/common/report b/common/report
index 7128bbebac8b75..a41a58f790b784 100644
--- a/common/report
+++ b/common/report
@@ -199,6 +199,7 @@ _xunit_make_testcase_report()
local out_src="${SRC_DIR}/${test_name}.out"
local full_file="${REPORT_DIR}/${test_name}.full"
local dmesg_file="${REPORT_DIR}/${test_name}.dmesg"
+ local mountfail_file="${REPORT_DIR}/${test_name}.mountfail"
local outbad_file="${REPORT_DIR}/${test_name}.out.bad"
if [ -z "$_err_msg" ]; then
_err_msg="Test $test_name failed, reason unknown"
@@ -225,6 +226,13 @@ _xunit_make_testcase_report()
printf ']]>\n' >>$report
echo -e "\t\t</system-err>" >> $report
fi
+ if [ -z "$quiet" -a -f "$mountfail_file" ]; then
+ echo -e "\t\t<mount-failure>" >> $report
+ printf '<![CDATA[\n' >>$report
+ cat "$mountfail_file" | tr -dc '[:print:][:space:]' | encode_cdata >>$report
+ printf ']]>\n' >>$report
+ echo -e "\t\t</mount-failure>" >> $report
+ fi
;;
*)
echo -e "\t\t<failure message=\"Unknown test_status=$test_status\" type=\"TestFail\"/>" >> $report
diff --git a/doc/xunit.xsd b/doc/xunit.xsd
index d287eaf5a25fb6..efe0badbb338b5 100644
--- a/doc/xunit.xsd
+++ b/doc/xunit.xsd
@@ -131,7 +131,7 @@
</xs:complexType>
</xs:element>
</xs:choice>
- <xs:choice minOccurs="0" maxOccurs="3">
+ <xs:choice minOccurs="0" maxOccurs="4">
<xs:element name="system-out" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">Data that was written to the .full log file while the test was executed.</xs:documentation>
@@ -162,6 +162,16 @@
</xs:restriction>
</xs:simpleType>
</xs:element>
+ <xs:element name="mount-failure" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Kernel log recorded when mount failed.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="pre-string">
+ <xs:whiteSpace value="preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
</xs:choice>
</xs:sequence>
<xs:attribute name="name" type="xs:token" use="required">
diff --git a/tests/selftest/008 b/tests/selftest/008
new file mode 100755
index 00000000000000..bcd1f13ed27778
--- /dev/null
+++ b/tests/selftest/008
@@ -0,0 +1,20 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2024-2026 Oracle. All Rights Reserved.
+#
+# FS QA Test 008
+#
+# Test mount failure capture.
+#
+. ./common/preamble
+_begin_fstest selftest
+
+_require_command "$WIPEFS_PROG" wipefs
+_require_scratch
+
+$WIPEFS_PROG -a $SCRATCH_DEV
+_scratch_mount &>> $seqres.full
+
+# success, all done
+status=0
+exit
diff --git a/tests/selftest/008.out b/tests/selftest/008.out
new file mode 100644
index 00000000000000..aaff95f3f48372
--- /dev/null
+++ b/tests/selftest/008.out
@@ -0,0 +1 @@
+QA output created by 008
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] treewide: convert all $MOUNT_PROG to _mount
2026-04-13 17:51 ` [PATCH 1/2] treewide: convert all $MOUNT_PROG to _mount Darrick J. Wong
@ 2026-04-14 7:58 ` Christoph Hellwig
2026-04-16 17:34 ` Zorro Lang
1 sibling, 0 replies; 13+ messages in thread
From: Christoph Hellwig @ 2026-04-14 7:58 UTC (permalink / raw)
To: Darrick J. Wong; +Cc: zlang, linux-xfs, fstests
Looks good:
Reviewed-by: Christoph Hellwig <hch@lst.de>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/2] check: capture dmesg of mount failures if test fails
2026-04-13 17:51 ` [PATCH 2/2] check: capture dmesg of mount failures if test fails Darrick J. Wong
@ 2026-04-14 7:59 ` Christoph Hellwig
2026-04-14 17:17 ` Darrick J. Wong
2026-04-16 17:56 ` Zorro Lang
2026-04-16 19:15 ` [PATCH v1.1 " Darrick J. Wong
2 siblings, 1 reply; 13+ messages in thread
From: Christoph Hellwig @ 2026-04-14 7:59 UTC (permalink / raw)
To: Darrick J. Wong; +Cc: zlang, linux-xfs, fstests
On Mon, Apr 13, 2026 at 10:51:25AM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
>
> Capture the kernel output after a mount failure occurs. If the test
> itself fails, then keep the logging output for further diagnosis.
I have to admit I don't really understand what the xunit and selftests
stuff is doing. Can you explain that a bit in the commit message?
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/2] check: capture dmesg of mount failures if test fails
2026-04-14 7:59 ` Christoph Hellwig
@ 2026-04-14 17:17 ` Darrick J. Wong
2026-04-15 5:34 ` Christoph Hellwig
0 siblings, 1 reply; 13+ messages in thread
From: Darrick J. Wong @ 2026-04-14 17:17 UTC (permalink / raw)
To: Christoph Hellwig; +Cc: zlang, linux-xfs, fstests
On Tue, Apr 14, 2026 at 12:59:12AM -0700, Christoph Hellwig wrote:
> On Mon, Apr 13, 2026 at 10:51:25AM -0700, Darrick J. Wong wrote:
> > From: Darrick J. Wong <djwong@kernel.org>
> >
> > Capture the kernel output after a mount failure occurs. If the test
> > itself fails, then keep the logging output for further diagnosis.
>
> I have to admit I don't really understand what the xunit and selftests
> stuff is doing. Can you explain that a bit in the commit message?
The xunit.xsd update specifies that there can be a <mount-failure>
element in the xml output, and that its contents will be the
$seqres.mountfail file.
The new selftest practices creating the .mountfail file in the test
output directory after a mount failure. Annoyingly there's no way for
the test itself to check that, since the .mountfail file is created in
check.
How about the following?
--D
From: Darrick J. Wong <djwong@kernel.org>
Subject: [PATCH] check: capture dmesg of mount failures if test fails
Capture the kernel output after a mount failure occurs. If the test
itself fails, then keep the logging output for further diagnosis. The
xunit.xsd update adds a <mount-failure> element to the xml output, whose
contents are the mountfail file.
Note that because the .mountfail file is preserved by ./check, the new
selftest requires the user to check for the .mountfail file. This is a
little awkward.
Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
---
check | 22 +++++++++++++++++++++-
common/config | 1 +
common/rc | 26 +++++++++++++++++++++++++-
common/report | 8 ++++++++
doc/xunit.xsd | 12 +++++++++++-
tests/selftest/008 | 22 ++++++++++++++++++++++
tests/selftest/008.out | 1 +
7 files changed, 89 insertions(+), 3 deletions(-)
create mode 100755 tests/selftest/008
create mode 100644 tests/selftest/008.out
diff --git a/check b/check
index 6ae89feba7c30a..c27cd8d9b81022 100755
--- a/check
+++ b/check
@@ -608,7 +608,7 @@ _stash_fail_loop_files() {
local seq_prefix="${REPORT_DIR}/${1}"
local cp_suffix="$2"
- for i in ".full" ".dmesg" ".out.bad" ".notrun" ".core" ".hints"; do
+ for i in ".full" ".dmesg" ".out.bad" ".notrun" ".core" ".hints" ".mountfail"; do
rm -f "${seq_prefix}${i}${cp_suffix}"
if [ -f "${seq_prefix}${i}" ]; then
cp "${seq_prefix}${i}" "${seq_prefix}${i}${cp_suffix}"
@@ -982,6 +982,7 @@ function run_section()
echo -n " $seqnum -- "
cat $seqres.notrun
tc_status="notrun"
+ rm -f "$seqres.mountfail?"
_stash_test_status "$seqnum" "$tc_status"
# Unmount the scratch fs so that we can wipe the scratch
@@ -1051,6 +1052,7 @@ function run_section()
if [ ! -f $seq.out ]; then
_dump_err "no qualified output"
tc_status="fail"
+ rm -f "$seqres.mountfail?"
_stash_test_status "$seqnum" "$tc_status"
continue;
fi
@@ -1089,6 +1091,24 @@ function run_section()
rm -f $seqres.hints
fi
fi
+
+ if [ -f "$seqres.mountfail?" ]; then
+ if [ "$tc_status" = "fail" ]; then
+ # Let the user know if there were mount
+ # failures on a test that failed because that
+ # could be interesting.
+ mv "$seqres.mountfail?" "$seqres.mountfail"
+ _dump_err "check: possible mount failures (see $seqres.mountfail)"
+ test -f $seqres.mountfail && \
+ maybe_compress_logfile $seqres.mountfail $MAX_MOUNTFAIL_SIZE
+ else
+ # Don't retain mount failure logs for tests
+ # that pass or were skipped because some tests
+ # intentionally drive mount failures.
+ rm -f "$seqres.mountfail?"
+ fi
+ fi
+
_stash_test_status "$seqnum" "$tc_status"
done
diff --git a/common/config b/common/config
index 2fa9ba44b8ad6c..5462bc061f3664 100644
--- a/common/config
+++ b/common/config
@@ -358,6 +358,7 @@ true "${MAX_OUTPUT_SIZE:=65536}"
true "${MAX_FULL_SIZE:=$((MAX_OUTPUT_SIZE * 2))}"
true "${MAX_DMESG_SIZE:=${MAX_OUTPUT_SIZE}}"
true "${MAX_OUTBAD_SIZE:=${MAX_OUTPUT_SIZE}}"
+true "${MAX_MOUNTFAIL_SIZE:=${MAX_OUTPUT_SIZE}}"
_common_mount_opts()
{
diff --git a/common/rc b/common/rc
index b11a7d1e404519..7de939d1630dd9 100644
--- a/common/rc
+++ b/common/rc
@@ -288,9 +288,33 @@ _get_hugepagesize()
awk '/Hugepagesize/ {print $2 * 1024}' /proc/meminfo
}
+# Does dmesg have a --since flag?
+_dmesg_detect_since()
+{
+ if [ -z "$DMESG_HAS_SINCE" ]; then
+ test "$DMESG_HAS_SINCE" = "yes"
+ return
+ elif dmesg --help | grep -q -- --since; then
+ DMESG_HAS_SINCE=yes
+ else
+ DMESG_HAS_SINCE=no
+ fi
+}
+
_mount()
{
- $MOUNT_PROG $*
+ $MOUNT_PROG $*
+ ret=$?
+ if [ "$ret" -ne 0 ]; then
+ echo "\"$MOUNT_PROG $*\" failed at $(date)" >> "$seqres.mountfail?"
+ if _dmesg_detect_since; then
+ dmesg --since '30s ago' >> "$seqres.mountfail?"
+ else
+ dmesg | tail -n 100 >> "$seqres.mountfail?"
+ fi
+ fi
+
+ return $ret
}
# Call _mount to do mount operation but also save mountpoint to
diff --git a/common/report b/common/report
index 7128bbebac8b75..a41a58f790b784 100644
--- a/common/report
+++ b/common/report
@@ -199,6 +199,7 @@ _xunit_make_testcase_report()
local out_src="${SRC_DIR}/${test_name}.out"
local full_file="${REPORT_DIR}/${test_name}.full"
local dmesg_file="${REPORT_DIR}/${test_name}.dmesg"
+ local mountfail_file="${REPORT_DIR}/${test_name}.mountfail"
local outbad_file="${REPORT_DIR}/${test_name}.out.bad"
if [ -z "$_err_msg" ]; then
_err_msg="Test $test_name failed, reason unknown"
@@ -225,6 +226,13 @@ _xunit_make_testcase_report()
printf ']]>\n' >>$report
echo -e "\t\t</system-err>" >> $report
fi
+ if [ -z "$quiet" -a -f "$mountfail_file" ]; then
+ echo -e "\t\t<mount-failure>" >> $report
+ printf '<![CDATA[\n' >>$report
+ cat "$mountfail_file" | tr -dc '[:print:][:space:]' | encode_cdata >>$report
+ printf ']]>\n' >>$report
+ echo -e "\t\t</mount-failure>" >> $report
+ fi
;;
*)
echo -e "\t\t<failure message=\"Unknown test_status=$test_status\" type=\"TestFail\"/>" >> $report
diff --git a/doc/xunit.xsd b/doc/xunit.xsd
index d287eaf5a25fb6..efe0badbb338b5 100644
--- a/doc/xunit.xsd
+++ b/doc/xunit.xsd
@@ -131,7 +131,7 @@
</xs:complexType>
</xs:element>
</xs:choice>
- <xs:choice minOccurs="0" maxOccurs="3">
+ <xs:choice minOccurs="0" maxOccurs="4">
<xs:element name="system-out" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">Data that was written to the .full log file while the test was executed.</xs:documentation>
@@ -162,6 +162,16 @@
</xs:restriction>
</xs:simpleType>
</xs:element>
+ <xs:element name="mount-failure" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Kernel log recorded when mount failed.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="pre-string">
+ <xs:whiteSpace value="preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
</xs:choice>
</xs:sequence>
<xs:attribute name="name" type="xs:token" use="required">
diff --git a/tests/selftest/008 b/tests/selftest/008
new file mode 100755
index 00000000000000..e6cc87fec99680
--- /dev/null
+++ b/tests/selftest/008
@@ -0,0 +1,22 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2024-2026 Oracle. All Rights Reserved.
+#
+# FS QA Test 008
+#
+# Test mount failure capture. Test runners will have to look for the
+# 008.mountfail file in the results directory since ./check handles the
+# preservation.
+#
+. ./common/preamble
+_begin_fstest selftest
+
+_require_command "$WIPEFS_PROG" wipefs
+_require_scratch
+
+$WIPEFS_PROG -a $SCRATCH_DEV
+_scratch_mount &>> $seqres.full
+
+# success, all done
+status=0
+exit
diff --git a/tests/selftest/008.out b/tests/selftest/008.out
new file mode 100644
index 00000000000000..aaff95f3f48372
--- /dev/null
+++ b/tests/selftest/008.out
@@ -0,0 +1 @@
+QA output created by 008
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 2/2] check: capture dmesg of mount failures if test fails
2026-04-14 17:17 ` Darrick J. Wong
@ 2026-04-15 5:34 ` Christoph Hellwig
0 siblings, 0 replies; 13+ messages in thread
From: Christoph Hellwig @ 2026-04-15 5:34 UTC (permalink / raw)
To: Darrick J. Wong; +Cc: Christoph Hellwig, zlang, linux-xfs, fstests
Looks good:
Reviewed-by: Christoph Hellwig <hch@lst.de>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] treewide: convert all $MOUNT_PROG to _mount
2026-04-13 17:51 ` [PATCH 1/2] treewide: convert all $MOUNT_PROG to _mount Darrick J. Wong
2026-04-14 7:58 ` Christoph Hellwig
@ 2026-04-16 17:34 ` Zorro Lang
2026-04-16 17:56 ` Darrick J. Wong
1 sibling, 1 reply; 13+ messages in thread
From: Zorro Lang @ 2026-04-16 17:34 UTC (permalink / raw)
To: Darrick J. Wong; +Cc: linux-xfs, fstests
On Mon, Apr 13, 2026 at 10:51:09AM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
>
> Going to add some new log scraping functionality when mount failures
> occur, so we need everyone to use _mount instead of $MOUNT_PROG.
>
> Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
> ---
As you're trying to "convert *all* $MOUNT_PROG to _mount", then bring in
"mountfail" file, I'm wondering what if someone case expects to get a
failed mount ?
Thanks,
Zorro
> common/btrfs | 4 ++--
> common/dmdelay | 2 +-
> common/dmerror | 2 +-
> common/dmlogwrites | 2 +-
> common/overlay | 6 +++---
> tests/btrfs/012 | 6 +++---
> tests/btrfs/075 | 2 +-
> tests/btrfs/089 | 2 +-
> tests/btrfs/136 | 4 ++--
> tests/btrfs/208 | 2 +-
> tests/btrfs/330 | 2 +-
> tests/btrfs/335 | 2 +-
> tests/ext4/032 | 2 +-
> tests/generic/067 | 4 ++--
> tests/generic/089 | 2 +-
> tests/generic/120 | 2 +-
> tests/generic/306 | 2 +-
> tests/generic/361 | 2 +-
> tests/generic/373 | 2 +-
> tests/generic/374 | 2 +-
> tests/generic/395 | 4 ++--
> tests/generic/409 | 6 +++---
> tests/generic/410 | 8 ++++----
> tests/generic/411 | 8 ++++----
> tests/generic/504 | 4 ++--
> tests/generic/589 | 8 ++++----
> tests/generic/631 | 2 +-
> tests/generic/717 | 2 +-
> tests/overlay/005 | 4 ++--
> tests/overlay/025 | 2 +-
> tests/overlay/062 | 2 +-
> tests/overlay/083 | 6 +++---
> tests/overlay/086 | 12 ++++++------
> tests/xfs/044 | 2 +-
> tests/xfs/049 | 8 ++++----
> tests/xfs/149 | 4 ++--
> tests/xfs/206 | 2 +-
> tests/xfs/250 | 2 +-
> tests/xfs/289 | 4 ++--
> tests/xfs/300 | 2 +-
> tests/xfs/507 | 2 +-
> tests/xfs/544 | 2 +-
> 42 files changed, 75 insertions(+), 75 deletions(-)
>
>
> diff --git a/common/btrfs b/common/btrfs
> index c2d616aa26e4be..30288f07b61a3e 100644
> --- a/common/btrfs
> +++ b/common/btrfs
> @@ -358,7 +358,7 @@ _btrfs_stress_subvolume()
> mkdir -p $subvol_mnt
> while [ ! -e $stop_file ]; do
> $BTRFS_UTIL_PROG subvolume create $btrfs_mnt/$subvol_name
> - $MOUNT_PROG -o subvol=$subvol_name $btrfs_dev $subvol_mnt
> + _mount -o subvol=$subvol_name $btrfs_dev $subvol_mnt
> _unmount $subvol_mnt
> $BTRFS_UTIL_PROG subvolume delete $btrfs_mnt/$subvol_name
> done
> @@ -444,7 +444,7 @@ _btrfs_stress_remount_compress()
> local btrfs_mnt=$1
> while true; do
> for algo in no zlib lzo; do
> - $MOUNT_PROG -o remount,compress=$algo $btrfs_mnt
> + _mount -o remount,compress=$algo $btrfs_mnt
> done
> done
> }
> diff --git a/common/dmdelay b/common/dmdelay
> index 848afb993faa19..ff0b8adf8bfc72 100644
> --- a/common/dmdelay
> +++ b/common/dmdelay
> @@ -22,7 +22,7 @@ _init_delay()
> _mount_delay()
> {
> _scratch_options mount
> - $MOUNT_PROG -t $FSTYP `_common_dev_mount_options` $SCRATCH_OPTIONS \
> + _mount -t $FSTYP `_common_dev_mount_options` $SCRATCH_OPTIONS \
> $DELAY_DEV $SCRATCH_MNT
> }
>
> diff --git a/common/dmerror b/common/dmerror
> index 309129c03c8d87..5c99fc1629b4ae 100644
> --- a/common/dmerror
> +++ b/common/dmerror
> @@ -95,7 +95,7 @@ _dmerror_init()
> _dmerror_mount()
> {
> _scratch_options mount
> - $MOUNT_PROG -t $FSTYP `_common_dev_mount_options $*` $SCRATCH_OPTIONS \
> + _mount -t $FSTYP `_common_dev_mount_options $*` $SCRATCH_OPTIONS \
> $DMERROR_DEV $SCRATCH_MNT
> }
>
> diff --git a/common/dmlogwrites b/common/dmlogwrites
> index a27e1966a933a6..278656269584b3 100644
> --- a/common/dmlogwrites
> +++ b/common/dmlogwrites
> @@ -104,7 +104,7 @@ _log_writes_mkfs()
> _log_writes_mount()
> {
> _scratch_options mount
> - $MOUNT_PROG -t $FSTYP `_common_dev_mount_options $*` $SCRATCH_OPTIONS \
> + _mount -t $FSTYP `_common_dev_mount_options $*` $SCRATCH_OPTIONS \
> $LOGWRITES_DMDEV $SCRATCH_MNT
> }
>
> diff --git a/common/overlay b/common/overlay
> index 67ae11f883ee68..d32f3219a5285a 100644
> --- a/common/overlay
> +++ b/common/overlay
> @@ -29,13 +29,13 @@ _overlay_mount_dirs()
> [ -n "$upperdir" ] && [ "$upperdir" != "-" ] && \
> diropts+=",upperdir=$upperdir,workdir=$workdir"
>
> - $MOUNT_PROG -t overlay $diropts `_common_dev_mount_options $*`
> + _mount -t overlay $diropts `_common_dev_mount_options $*`
> }
>
> # Mount with mnt/dev of scratch mount and custom mount options
> _overlay_scratch_mount_opts()
> {
> - $MOUNT_PROG -t overlay $OVL_BASE_SCRATCH_MNT $SCRATCH_MNT $*
> + _mount -t overlay $OVL_BASE_SCRATCH_MNT $SCRATCH_MNT $*
> }
>
> # Mount with same options/mnt/dev of scratch mount, but optionally
> @@ -130,7 +130,7 @@ _overlay_scratch_mount()
> # By default, libmount merges remount options with old mount options.
> # overlayfs does not support re-configuring the same mount options.
> # We workaround this problem with --options-mode ignore.
> - $MOUNT_PROG $SCRATCH_MNT --options-mode ignore $*
> + _mount $SCRATCH_MNT --options-mode ignore $*
> return
> fi
>
> diff --git a/tests/btrfs/012 b/tests/btrfs/012
> index 6914fba6ebe2cf..b3ca4190ecd117 100755
> --- a/tests/btrfs/012
> +++ b/tests/btrfs/012
> @@ -41,7 +41,7 @@ export SELINUX_MOUNT_OPTIONS=""
> $MKFS_EXT4_PROG -F -b $BLOCK_SIZE $SCRATCH_DEV > $seqres.full 2>&1 || \
> _notrun "Could not create ext4 filesystem"
> # Manual mount so we don't use -t btrfs or selinux context
> -mount -t ext4 $SCRATCH_DEV $SCRATCH_MNT
> +_mount -t ext4 $SCRATCH_DEV $SCRATCH_MNT
> if [ $? -ne 0 -a $BLOCK_SIZE -gt $(_get_page_size) ]; then
> _notrun "block size $BLOCK_SIZE is not supported by ext4"
> fi
> @@ -68,7 +68,7 @@ $E2FSCK_PROG -fn $SCRATCH_MNT/ext2_saved/image >> $seqres.full 2>&1 || \
>
> # And the files in that image should match
> mkdir -p $SCRATCH_MNT/mnt
> -mount -o loop $SCRATCH_MNT/ext2_saved/image $SCRATCH_MNT/mnt || \
> +_mount -o loop $SCRATCH_MNT/ext2_saved/image $SCRATCH_MNT/mnt || \
> _fail "could not loop mount saved ext4 image"
>
> echo "Checking saved ext2 image against the original one:"
> @@ -90,7 +90,7 @@ $E2FSCK_PROG -fn $SCRATCH_DEV >> $seqres.full 2>&1 || \
> _fail "restored ext4 image is corrupt"
>
> # Mount the un-converted ext4 device & check the contents
> -mount -t ext4 $SCRATCH_DEV $SCRATCH_MNT
> +_mount -t ext4 $SCRATCH_DEV $SCRATCH_MNT
> echo "Checking rolled back ext2 against the original one:"
> $FSSUM_PROG -r $tmp.original $SCRATCH_MNT/$BASENAME
>
> diff --git a/tests/btrfs/075 b/tests/btrfs/075
> index 917993ca2da3a6..737c4ffdd57865 100755
> --- a/tests/btrfs/075
> +++ b/tests/btrfs/075
> @@ -37,7 +37,7 @@ _scratch_mount
> subvol_mnt=$TEST_DIR/$seq.mnt
> mkdir -p $subvol_mnt
> $BTRFS_UTIL_PROG subvolume create $SCRATCH_MNT/subvol >>$seqres.full 2>&1
> -$MOUNT_PROG -o subvol=subvol $SELINUX_MOUNT_OPTIONS $SCRATCH_DEV $subvol_mnt
> +_mount -o subvol=subvol $SELINUX_MOUNT_OPTIONS $SCRATCH_DEV $subvol_mnt
> status=$?
>
> exit
> diff --git a/tests/btrfs/089 b/tests/btrfs/089
> index 8f8e37b6fde87b..9e8d8ea3a5e097 100755
> --- a/tests/btrfs/089
> +++ b/tests/btrfs/089
> @@ -29,7 +29,7 @@ $BTRFS_UTIL_PROG subvolume set-default $testvol_id "$SCRATCH_MNT" >>$seqres.full
> # Bind-mount a directory under the default subvolume.
> mkdir "$SCRATCH_MNT/testvol/testdir"
> mkdir "$SCRATCH_MNT/testvol/mnt"
> -mount --bind "$SCRATCH_MNT/testvol/testdir" "$SCRATCH_MNT/testvol/mnt"
> +_mount --bind "$SCRATCH_MNT/testvol/testdir" "$SCRATCH_MNT/testvol/mnt"
>
> # Now attempt to delete the default subvolume.
> $BTRFS_UTIL_PROG subvolume delete "$SCRATCH_MNT/testvol" >>$seqres.full 2>&1
> diff --git a/tests/btrfs/136 b/tests/btrfs/136
> index fd24d3f8c1fa45..97c110981adebb 100755
> --- a/tests/btrfs/136
> +++ b/tests/btrfs/136
> @@ -44,7 +44,7 @@ $MKFS_EXT4_PROG -F -t ext3 -b $BLOCK_SIZE $SCRATCH_DEV > $seqres.full 2>&1 || \
> _notrun "Could not create ext3 filesystem"
>
> # mount and populate non-extent file
> -mount -t ext3 $SCRATCH_DEV $SCRATCH_MNT
> +_mount -t ext3 $SCRATCH_DEV $SCRATCH_MNT
> if [ $? -ne 0 -a $BLOCK_SIZE -gt $(_get_page_size) ]; then
> _notrun "block size $BLOCK_SIZE is not supported by ext3"
> fi
> @@ -57,7 +57,7 @@ $TUNE2FS_PROG -O extents,uninit_bg,dir_index $SCRATCH_DEV >> $seqres.full 2>&1
> $E2FSCK_PROG -fyD $SCRATCH_DEV >> $seqres.full 2>&1
>
> # mount and populate extent file
> -mount -t ext4 $SCRATCH_DEV $SCRATCH_MNT
> +_mount -t ext4 $SCRATCH_DEV $SCRATCH_MNT
> populate_data "$SCRATCH_MNT/ext3_ext4_data/ext4"
>
> # Compute md5 of ext3,ext4 files.
> diff --git a/tests/btrfs/208 b/tests/btrfs/208
> index 5ea732ae8f71a7..93a999541dab06 100755
> --- a/tests/btrfs/208
> +++ b/tests/btrfs/208
> @@ -45,7 +45,7 @@ _scratch_unmount
>
> # Now we mount the subvol2, which makes subvol3 not accessible for this mount
> # point, but we should be able to delete it using it's subvolume id
> -$MOUNT_PROG -o subvol=subvol2 $SCRATCH_DEV $SCRATCH_MNT
> +_mount -o subvol=subvol2 $SCRATCH_DEV $SCRATCH_MNT
> _delete_and_list subvol3 "Last remaining subvolume:"
> _scratch_unmount
>
> diff --git a/tests/btrfs/330 b/tests/btrfs/330
> index 3a311a5affc0a0..10c4466707f3a3 100755
> --- a/tests/btrfs/330
> +++ b/tests/btrfs/330
> @@ -17,7 +17,7 @@ _cleanup()
> # Import common functions.
> . ./common/filter.btrfs
>
> -$MOUNT_PROG -V | grep -q 'fd-based-mount'
> +_mount -V | grep -q 'fd-based-mount'
> if [ "$?" -eq 0 ]; then
> _fixed_by_kernel_commit cda7163d4e3d \
> "btrfs: fix per-subvolume RO/RW flags with new mount API"
> diff --git a/tests/btrfs/335 b/tests/btrfs/335
> index 34764e4aa6c8c1..edc5c0ab3374b8 100755
> --- a/tests/btrfs/335
> +++ b/tests/btrfs/335
> @@ -49,7 +49,7 @@ $BTRFS_UTIL_PROG balance start -mconvert=raid1 $SCRATCH_MNT 2>&1 |\
>
> _scratch_unmount
>
> -$MOUNT_PROG -t btrfs -odegraded ${devs[0]} $SCRATCH_MNT
> +_mount -t btrfs -odegraded ${devs[0]} $SCRATCH_MNT
>
> $BTRFS_UTIL_PROG device remove --force missing $SCRATCH_MNT >> $seqres.full
> $BTRFS_UTIL_PROG balance start --full-balance $SCRATCH_MNT >> $seqres.full
> diff --git a/tests/ext4/032 b/tests/ext4/032
> index 043ae4f5350530..ef050ec0fb421c 100755
> --- a/tests/ext4/032
> +++ b/tests/ext4/032
> @@ -48,7 +48,7 @@ ext4_online_resize()
> $seqres.full 2>&1 || _fail "mkfs failed"
>
> echo "+++ mount image file" | tee -a $seqres.full
> - $MOUNT_PROG -t ${FSTYP} ${LOOP_DEVICE} ${IMG_MNT} > \
> + _mount -t ${FSTYP} ${LOOP_DEVICE} ${IMG_MNT} > \
> /dev/null 2>&1 || _fail "mount failed"
>
> echo "+++ resize fs to $final_size" | tee -a $seqres.full
> diff --git a/tests/generic/067 b/tests/generic/067
> index b45ae834f918d2..99d10ee0be0a0f 100755
> --- a/tests/generic/067
> +++ b/tests/generic/067
> @@ -34,7 +34,7 @@ mount_nonexistent_mnt()
> {
> echo "# mount to nonexistent mount point" >>$seqres.full
> rm -rf $TEST_DIR/nosuchdir
> - $MOUNT_PROG $SCRATCH_DEV $TEST_DIR/nosuchdir >>$seqres.full 2>&1
> + _mount $SCRATCH_DEV $TEST_DIR/nosuchdir >>$seqres.full 2>&1
> }
>
> # fs driver should be able to handle mounting a free loop device gracefully xfs
> @@ -60,7 +60,7 @@ mount_wrong_fstype()
> fs=xfs
> fi
> echo "# mount with wrong fs type" >>$seqres.full
> - $MOUNT_PROG -t $fs $SCRATCH_DEV $SCRATCH_MNT >>$seqres.full 2>&1
> + _mount -t $fs $SCRATCH_DEV $SCRATCH_MNT >>$seqres.full 2>&1
> }
>
> # umount a symlink to device, which is not mounted.
> diff --git a/tests/generic/089 b/tests/generic/089
> index 89c19484fd7b8a..9998457fb5baf1 100755
> --- a/tests/generic/089
> +++ b/tests/generic/089
> @@ -34,7 +34,7 @@ cd $TEST_DIR
> rm -fr test
> mkdir test || exit 1
> cd $TEST_DIR/test
> -mount > t_mtab
> +_mount > t_mtab
>
> mtab()
> {
> diff --git a/tests/generic/120 b/tests/generic/120
> index 7527bd4a078423..d11b90b809f240 100755
> --- a/tests/generic/120
> +++ b/tests/generic/120
> @@ -29,7 +29,7 @@ _compare_access_times()
> cat $tmp.out
> echo "---------------------------------------------------"
> $here/src/lstat64 $1
> - mount | grep $SCRATCH_MNT
> + _mount | grep $SCRATCH_MNT
> fi
>
> }
> diff --git a/tests/generic/306 b/tests/generic/306
> index 8e118472d8bef0..14c07e0bda4afa 100755
> --- a/tests/generic/306
> +++ b/tests/generic/306
> @@ -66,7 +66,7 @@ $XFS_IO_PROG -f -c "pwrite 0 512" $SYMLINK | _filter_xfs_io
> $XFS_IO_PROG -t -c "pwrite 0 512" $SYMLINK | _filter_xfs_io
>
> echo "== write to bind-mounted rw file on ro fs"
> -mount --bind $TARGET $BINDFILE
> +_mount --bind $TARGET $BINDFILE
> # with and without -f (adds O_CREAT)
> $XFS_IO_PROG -c "pwrite 0 512" $BINDFILE | _filter_xfs_io
> $XFS_IO_PROG -f -c "pwrite 0 512" $BINDFILE | _filter_xfs_io
> diff --git a/tests/generic/361 b/tests/generic/361
> index b584af47540020..70dba3a0ca8b75 100755
> --- a/tests/generic/361
> +++ b/tests/generic/361
> @@ -52,7 +52,7 @@ fi
> $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
> +_mount -o remount,ro $fs_mnt >>$seqres.full 2>&1
>
> _unmount $fs_mnt &>/dev/null
> _destroy_loop_device $loop_dev
> diff --git a/tests/generic/373 b/tests/generic/373
> index 04ec642518ce70..42bdc1be0757ac 100755
> --- a/tests/generic/373
> +++ b/tests/generic/373
> @@ -42,7 +42,7 @@ blksz=65536
> sz=$((blksz * blocks))
>
> echo "Mount otherdir"
> -$MOUNT_PROG --bind $SCRATCH_MNT $otherdir
> +_mount --bind $SCRATCH_MNT $otherdir
>
> echo "Create file"
> _pwrite_byte 0x61 0 $sz $testdir/file >> $seqres.full
> diff --git a/tests/generic/374 b/tests/generic/374
> index 9a85091e29886e..8f7d17152c84be 100755
> --- a/tests/generic/374
> +++ b/tests/generic/374
> @@ -41,7 +41,7 @@ blksz=65536
> sz=$((blocks * blksz))
>
> echo "Mount otherdir"
> -$MOUNT_PROG --bind $SCRATCH_MNT $otherdir
> +_mount --bind $SCRATCH_MNT $otherdir
>
> echo "Create file"
> _pwrite_byte 0x61 0 $sz $testdir/file >> $seqres.full
> diff --git a/tests/generic/395 b/tests/generic/395
> index f9c331adb969ac..261f468f397c8c 100755
> --- a/tests/generic/395
> +++ b/tests/generic/395
> @@ -71,8 +71,8 @@ _scratch_remount ro
> _set_encpolicy $SCRATCH_MNT/ro_dir |& _filter_scratch
> _get_encpolicy $SCRATCH_MNT/ro_dir |& _filter_scratch
> _scratch_remount rw
> -mount --bind $SCRATCH_MNT $SCRATCH_MNT/ro_bind_mnt
> -mount -o remount,ro,bind $SCRATCH_MNT/ro_bind_mnt
> +_mount --bind $SCRATCH_MNT $SCRATCH_MNT/ro_bind_mnt
> +_mount -o remount,ro,bind $SCRATCH_MNT/ro_bind_mnt
> _set_encpolicy $SCRATCH_MNT/ro_bind_mnt/ro_dir |& _filter_scratch
> _get_encpolicy $SCRATCH_MNT/ro_bind_mnt/ro_dir |& _filter_scratch
> _unmount $SCRATCH_MNT/ro_bind_mnt
> diff --git a/tests/generic/409 b/tests/generic/409
> index ac1b14ad60f723..eff7c3584b413b 100755
> --- a/tests/generic/409
> +++ b/tests/generic/409
> @@ -88,7 +88,7 @@ start_test()
>
> _scratch_mkfs >$seqres.full 2>&1
> _get_mount -t $FSTYP $SCRATCH_DEV $MNTHEAD
> - $MOUNT_PROG --make-"${type}" $MNTHEAD
> + _mount --make-"${type}" $MNTHEAD
> mkdir $mpA $mpB $mpC $mpD
> }
>
> @@ -108,9 +108,9 @@ bind_run()
> echo "bind $source on $dest"
> _get_mount -t $FSTYP $SCRATCH_DEV $mpA
> mkdir -p $mpA/dir 2>/dev/null
> - $MOUNT_PROG --make-shared $mpA
> + _mount --make-shared $mpA
> _get_mount --bind $mpA $mpB
> - $MOUNT_PROG --make-"$source" $mpB
> + _mount --make-"$source" $mpB
> # maybe unbindable at here
> _get_mount --bind $mpB $mpC 2>/dev/null
> if [ $? -ne 0 ]; then
> diff --git a/tests/generic/410 b/tests/generic/410
> index e0d0c57eba2950..69f9dbe97f182d 100755
> --- a/tests/generic/410
> +++ b/tests/generic/410
> @@ -94,7 +94,7 @@ start_test()
>
> _scratch_mkfs >>$seqres.full 2>&1
> _get_mount -t $FSTYP $SCRATCH_DEV $MNTHEAD
> - $MOUNT_PROG --make-"${type}" $MNTHEAD
> + _mount --make-"${type}" $MNTHEAD
> mkdir $mpA $mpB $mpC
> }
>
> @@ -118,14 +118,14 @@ run()
> echo "make-$cmd a $orgs mount"
> _get_mount -t $FSTYP $SCRATCH_DEV $mpA
> mkdir -p $mpA/dir 2>/dev/null
> - $MOUNT_PROG --make-shared $mpA
> + _mount --make-shared $mpA
>
> # prepare the original status on mpB
> _get_mount --bind $mpA $mpB
> # shared&slave status need to do make-slave then make-shared
> # two operations.
> for t in $orgs; do
> - $MOUNT_PROG --make-"$t" $mpB
> + _mount --make-"$t" $mpB
> done
>
> # "before" for prepare and check original status
> @@ -146,7 +146,7 @@ run()
> _put_mount # umount C
> fi
> if [ "$i" = "before" ];then
> - $MOUNT_PROG --make-"${cmd}" $mpB
> + _mount --make-"${cmd}" $mpB
> fi
> done
>
> diff --git a/tests/generic/411 b/tests/generic/411
> index 0a80554cd4d3b9..b099940f3fa704 100755
> --- a/tests/generic/411
> +++ b/tests/generic/411
> @@ -77,7 +77,7 @@ start_test()
>
> _scratch_mkfs >$seqres.full 2>&1
> _get_mount -t $FSTYP $SCRATCH_DEV $MNTHEAD
> - $MOUNT_PROG --make-"${type}" $MNTHEAD
> + _mount --make-"${type}" $MNTHEAD
> mkdir $mpA $mpB $mpC
> }
>
> @@ -100,11 +100,11 @@ crash_test()
>
> _get_mount -t $FSTYP $SCRATCH_DEV $mpA
> mkdir $mpA/mnt1
> - $MOUNT_PROG --make-shared $mpA
> + _mount --make-shared $mpA
> _get_mount --bind $mpA $mpB
> _get_mount --bind $mpA $mpC
> - $MOUNT_PROG --make-slave $mpB
> - $MOUNT_PROG --make-slave $mpC
> + _mount --make-slave $mpB
> + _mount --make-slave $mpC
> _get_mount -t $FSTYP $SCRATCH_DEV $mpA/mnt1
> mkdir $mpA/mnt1/mnt2
>
> diff --git a/tests/generic/504 b/tests/generic/504
> index 611e6c283e215a..931f231504b702 100755
> --- a/tests/generic/504
> +++ b/tests/generic/504
> @@ -41,7 +41,7 @@ exec {test_fd}> $testfile
> if [ "$FSTESTS_ISOL" = "privatens" ]; then
> move_proc="$tmp.procdir"
> mkdir -p "$move_proc"
> - mount --move /proc "$move_proc"
> + _mount --move /proc "$move_proc"
> fi
> flock -x $test_fd
> cat /proc/locks >> $seqres.full
> @@ -50,7 +50,7 @@ cat /proc/locks >> $seqres.full
> grep -q ":$tf_inode " /proc/locks || echo "lock info not found"
>
> if [ -n "$move_proc" ]; then
> - mount --move "$move_proc" /proc
> + _mount --move "$move_proc" /proc
> fi
>
> # success, all done
> diff --git a/tests/generic/589 b/tests/generic/589
> index 0384083bbf4251..e7627f26c75996 100755
> --- a/tests/generic/589
> +++ b/tests/generic/589
> @@ -81,12 +81,12 @@ start_test()
>
> _get_mount -t $FSTYP $SCRATCH_DEV $SRCHEAD
> # make sure $SRCHEAD is private
> - $MOUNT_PROG --make-private $SRCHEAD
> + _mount --make-private $SRCHEAD
>
> _get_mount -t $FSTYP $SCRATCH_DEV $DSTHEAD
> # test start with a bind, then make-shared $DSTHEAD
> _get_mount --bind $DSTHEAD $DSTHEAD
> - $MOUNT_PROG --make-"${type}" $DSTHEAD
> + _mount --make-"${type}" $DSTHEAD
> mkdir $mpA $mpB $mpC $mpD
> }
>
> @@ -106,10 +106,10 @@ move_run()
> echo "move $source to $dest"
> _get_mount -t $FSTYP $SCRATCH_DEV $mpA
> mkdir -p $mpA/dir 2>/dev/null
> - $MOUNT_PROG --make-shared $mpA
> + _mount --make-shared $mpA
> # need a peer for slave later
> _get_mount --bind $mpA $mpB
> - $MOUNT_PROG --make-"$source" $mpB
> + _mount --make-"$source" $mpB
> # maybe unbindable at here
> _get_mount --move $mpB $mpC 2>/dev/null
> if [ $? -ne 0 ]; then
> diff --git a/tests/generic/631 b/tests/generic/631
> index 8b12b8f247ee81..96e917e8c25314 100755
> --- a/tests/generic/631
> +++ b/tests/generic/631
> @@ -80,7 +80,7 @@ worker() {
> mkdir $SCRATCH_MNT/workdir$tag
> mkdir $SCRATCH_MNT/upperdir$tag
>
> - mount -t overlay overlay -o "$l,$u,$w,$i" $mergedir
> + _mount -t overlay overlay -o "$l,$u,$w,$i" $mergedir
> mv $mergedir/etc/access.conf $mergedir/etc/access.conf.bak
> touch $mergedir/etc/access.conf
> mv $mergedir/etc/access.conf $mergedir/etc/access.conf.bak
> diff --git a/tests/generic/717 b/tests/generic/717
> index 2ecd2888d4590e..acbe787c5e42c1 100755
> --- a/tests/generic/717
> +++ b/tests/generic/717
> @@ -82,7 +82,7 @@ $XFS_IO_PROG -c "exchangerange $SCRATCH_MNT/c" $dir/a
>
> echo Files on different mounts
> mkdir -p $SCRATCH_MNT/xyz
> -mount --bind $dir $SCRATCH_MNT/xyz --bind
> +_mount --bind $dir $SCRATCH_MNT/xyz --bind
> _pwrite_byte 0x60 0 $((blksz * (nrblks + 2))) $dir/c >> $seqres.full
> $XFS_IO_PROG -c "exchangerange $SCRATCH_MNT/xyz/c" $dir/a
> _unmount $SCRATCH_MNT/xyz
> diff --git a/tests/overlay/005 b/tests/overlay/005
> index d396b5cb213048..809154d9c66caa 100755
> --- a/tests/overlay/005
> +++ b/tests/overlay/005
> @@ -51,8 +51,8 @@ $MKFS_XFS_PROG -f -n ftype=1 $upper_loop_dev >>$seqres.full 2>&1
> # mount underlying xfs
> mkdir -p ${OVL_BASE_SCRATCH_MNT}/lowermnt
> mkdir -p ${OVL_BASE_SCRATCH_MNT}/uppermnt
> -$MOUNT_PROG $fs_loop_dev ${OVL_BASE_SCRATCH_MNT}/lowermnt
> -$MOUNT_PROG $upper_loop_dev ${OVL_BASE_SCRATCH_MNT}/uppermnt
> +_mount $fs_loop_dev ${OVL_BASE_SCRATCH_MNT}/lowermnt
> +_mount $upper_loop_dev ${OVL_BASE_SCRATCH_MNT}/uppermnt
>
> # prepare dirs
> mkdir -p ${OVL_BASE_SCRATCH_MNT}/lowermnt/lower
> diff --git a/tests/overlay/025 b/tests/overlay/025
> index dc819a39348b69..6ba46191b557be 100755
> --- a/tests/overlay/025
> +++ b/tests/overlay/025
> @@ -36,7 +36,7 @@ _require_extra_fs tmpfs
> # create a tmpfs in $TEST_DIR
> tmpfsdir=$TEST_DIR/tmpfs
> mkdir -p $tmpfsdir
> -$MOUNT_PROG -t tmpfs tmpfs $tmpfsdir
> +_mount -t tmpfs tmpfs $tmpfsdir
>
> mkdir -p $tmpfsdir/{lower,upper,work,mnt}
> mkdir -p -m 0 $tmpfsdir/upper/testd
> diff --git a/tests/overlay/062 b/tests/overlay/062
> index e44628b7459bfb..9a1db7419c4ca2 100755
> --- a/tests/overlay/062
> +++ b/tests/overlay/062
> @@ -60,7 +60,7 @@ lowertestdir=$lower2/testdir
> create_test_files $lowertestdir
>
> # bind mount to pin lower test dir dentry to dcache
> -$MOUNT_PROG --bind $lowertestdir $lowertestdir
> +_mount --bind $lowertestdir $lowertestdir
>
> # For non-upper overlay mount, nfs_export requires disabling redirect_dir.
> _overlay_scratch_mount_opts \
> diff --git a/tests/overlay/083 b/tests/overlay/083
> index d037d4c858e6a6..56e02f8cc77d73 100755
> --- a/tests/overlay/083
> +++ b/tests/overlay/083
> @@ -40,14 +40,14 @@ mkdir -p "$lowerdir_spaces" "$lowerdir_colons" "$lowerdir_commas"
>
> # _overlay_mount_* helpers do not handle special chars well, so execute mount directly.
> # if escaped colons are not parsed correctly, mount will fail.
> -$MOUNT_PROG -t overlay ovl_esc_test $SCRATCH_MNT \
> +_mount -t overlay ovl_esc_test $SCRATCH_MNT \
> -o"upperdir=$upperdir,workdir=$workdir" \
> -o"lowerdir=$lowerdir_colons_esc:$lowerdir_spaces" \
> 2>&1 | tee -a $seqres.full
>
> # if spaces are not escaped when showing mount options,
> # mount command will not show the word 'spaces' after the spaces
> -$MOUNT_PROG -t overlay | grep ovl_esc_test | tee -a $seqres.full | grep -v spaces && \
> +_mount -t overlay | grep ovl_esc_test | tee -a $seqres.full | grep -v spaces && \
> echo "ERROR: escaped spaces truncated from lowerdir mount option"
>
> # Re-create the upper/work dirs to mount them with a different lower
> @@ -65,7 +65,7 @@ mkdir -p "$upperdir" "$workdir"
> # and this test will fail, but the failure would indicate a libmount issue, not
> # a kernel issue. Therefore, force libmount to use mount(2) syscall, so we only
> # test the kernel fix.
> -LIBMOUNT_FORCE_MOUNT2=always $MOUNT_PROG -t overlay $OVL_BASE_SCRATCH_DEV $SCRATCH_MNT \
> +LIBMOUNT_FORCE_MOUNT2=always _mount -t overlay $OVL_BASE_SCRATCH_DEV $SCRATCH_MNT \
> -o"upperdir=$upperdir,workdir=$workdir,lowerdir=$lowerdir_commas_esc" 2>> $seqres.full || \
> echo "ERROR: incorrect parsing of escaped comma in lowerdir mount option"
>
> diff --git a/tests/overlay/086 b/tests/overlay/086
> index 9c8a00588595f6..23c56d074ff34a 100755
> --- a/tests/overlay/086
> +++ b/tests/overlay/086
> @@ -33,21 +33,21 @@ mkdir -p "$lowerdir_spaces" "$lowerdir_colons"
> # _overlay_mount_* helpers do not handle lowerdir+,datadir+, so execute mount directly.
>
> # check illegal combinations and order of lowerdir,lowerdir+,datadir+
> -$MOUNT_PROG -t overlay none $SCRATCH_MNT \
> +_mount -t overlay none $SCRATCH_MNT \
> -o"lowerdir=$lowerdir,lowerdir+=$lowerdir_colons" \
> 2>> $seqres.full && \
> echo "ERROR: invalid combination of lowerdir and lowerdir+ mount options"
>
> $UMOUNT_PROG $SCRATCH_MNT 2>/dev/null
>
> -$MOUNT_PROG -t overlay none $SCRATCH_MNT \
> +_mount -t overlay none $SCRATCH_MNT \
> -o"lowerdir=$lowerdir,datadir+=$lowerdir_colons" \
> -o redirect_dir=follow,metacopy=on 2>> $seqres.full && \
> echo "ERROR: invalid combination of lowerdir and datadir+ mount options"
>
> $UMOUNT_PROG $SCRATCH_MNT 2>/dev/null
>
> -$MOUNT_PROG -t overlay none $SCRATCH_MNT \
> +_mount -t overlay none $SCRATCH_MNT \
> -o"datadir+=$lowerdir,lowerdir+=$lowerdir_colons" \
> -o redirect_dir=follow,metacopy=on 2>> $seqres.full && \
> echo "ERROR: invalid order of lowerdir+ and datadir+ mount options"
> @@ -55,7 +55,7 @@ $MOUNT_PROG -t overlay none $SCRATCH_MNT \
> $UMOUNT_PROG $SCRATCH_MNT 2>/dev/null
>
> # mount is expected to fail with escaped colons.
> -$MOUNT_PROG -t overlay none $SCRATCH_MNT \
> +_mount -t overlay none $SCRATCH_MNT \
> -o"lowerdir+=$lowerdir_colons_esc" \
> 2>> $seqres.full && \
> echo "ERROR: incorrect parsing of escaped colons in lowerdir+ mount option"
> @@ -63,14 +63,14 @@ $MOUNT_PROG -t overlay none $SCRATCH_MNT \
> $UMOUNT_PROG $SCRATCH_MNT 2>/dev/null
>
> # mount is expected to succeed without escaped colons.
> -$MOUNT_PROG -t overlay ovl_esc_test $SCRATCH_MNT \
> +_mount -t overlay ovl_esc_test $SCRATCH_MNT \
> -o"lowerdir+=$lowerdir_colons,datadir+=$lowerdir_spaces" \
> -o redirect_dir=follow,metacopy=on \
> 2>&1 | tee -a $seqres.full
>
> # if spaces are not escaped when showing mount options,
> # mount command will not show the word 'spaces' after the spaces
> -$MOUNT_PROG -t overlay | grep ovl_esc_test | tee -a $seqres.full | \
> +_mount -t overlay | grep ovl_esc_test | tee -a $seqres.full | \
> grep -q 'datadir+'.*spaces || \
> echo "ERROR: escaped spaces truncated from datadir+ mount option"
>
> diff --git a/tests/xfs/044 b/tests/xfs/044
> index 3ecb3479302e22..e8280f382ae3b6 100755
> --- a/tests/xfs/044
> +++ b/tests/xfs/044
> @@ -49,7 +49,7 @@ _check_no_mount()
> _check_require_logdev()
> {
> echo " *** mount without logdev (expect failure)"
> - if mount -t xfs $SCRATCH_DEV $SCRATCH_MNT >$tmp.err 2>&1
> + if _mount -t xfs $SCRATCH_DEV $SCRATCH_MNT >$tmp.err 2>&1
> then
> cat $tmp.err
> echo " !!! mount succeeded (expecting failure)"
> diff --git a/tests/xfs/049 b/tests/xfs/049
> index a3f478fa9351ab..64667a0d8baab2 100755
> --- a/tests/xfs/049
> +++ b/tests/xfs/049
> @@ -21,7 +21,7 @@ _cleanup()
>
> if [ -w $seqres.full ]; then
> echo "--- mounts at end (after cleanup)" >> $seqres.full
> - mount >> $seqres.full
> + _mount >> $seqres.full
> fi
> }
>
> @@ -47,14 +47,14 @@ echo "(dev=$SCRATCH_DEV, mount=$SCRATCH_MNT)" >> $seqres.full
> echo "" >> $seqres.full
>
> echo "--- mounts" >> $seqres.full
> -mount >> $seqres.full
> +_mount >> $seqres.full
>
> _log "Create ext2 fs on scratch"
> mkfs -t ext2 -F $SCRATCH_DEV >> $seqres.full 2>&1 \
> || _fail "!!! failed to mkfs ext2"
>
> _log "Mount ext2 fs on scratch"
> -mount -t ext2 $SCRATCH_DEV $SCRATCH_MNT >> $seqres.full 2>&1 \
> +_mount -t ext2 $SCRATCH_DEV $SCRATCH_MNT >> $seqres.full 2>&1 \
> || _fail "!!! failed to mount"
>
> _log "Create xfs fs in file on scratch"
> @@ -114,7 +114,7 @@ _destroy_loop_device $loop_dev1
> unset loop_dev1
>
> echo "--- mounts at end (before cleanup)" >> $seqres.full
> -mount >> $seqres.full
> +_mount >> $seqres.full
>
> # success, all done
> status=0
> diff --git a/tests/xfs/149 b/tests/xfs/149
> index 28dfc7f04c1773..baf6e22b98e289 100755
> --- a/tests/xfs/149
> +++ b/tests/xfs/149
> @@ -64,7 +64,7 @@ $XFS_GROWFS_PROG $loop_symlink 2>&1 | sed -e s:$loop_symlink:LOOPSYMLINK:
> # These mounted operations should pass
>
> echo "=== mount ==="
> -$MOUNT_PROG $loop_dev $mntdir || _fail "!!! failed to loopback mount"
> +_mount $loop_dev $mntdir || _fail "!!! failed to loopback mount"
>
> echo "=== xfs_growfs - check device node ==="
> $XFS_GROWFS_PROG -D 8192 $loop_dev > /dev/null
> @@ -76,7 +76,7 @@ echo "=== unmount ==="
> _unmount $mntdir || _fail "!!! failed to unmount"
>
> echo "=== mount device symlink ==="
> -$MOUNT_PROG $loop_symlink $mntdir || _fail "!!! failed to loopback mount"
> +_mount $loop_symlink $mntdir || _fail "!!! failed to loopback mount"
>
> echo "=== xfs_growfs - check device symlink ==="
> $XFS_GROWFS_PROG -D 16384 $loop_symlink > /dev/null
> diff --git a/tests/xfs/206 b/tests/xfs/206
> index bfd2dee939ddd7..a515c6c8838cff 100755
> --- a/tests/xfs/206
> +++ b/tests/xfs/206
> @@ -75,7 +75,7 @@ echo "=== mkfs.xfs ==="
> mkfs.xfs -f -bsize=4096 -l size=32m -dagsize=76288719b,size=3905982455b \
> $tmpfile | mkfs_filter
>
> -mount -o loop $tmpfile $tmpdir || _fail "!!! failed to loopback mount"
> +_mount -o loop $tmpfile $tmpdir || _fail "!!! failed to loopback mount"
>
> # see what happens when we growfs it
> echo "=== xfs_growfs ==="
> diff --git a/tests/xfs/250 b/tests/xfs/250
> index 2554e1e91c4c6f..0c3f6f075c1cb2 100755
> --- a/tests/xfs/250
> +++ b/tests/xfs/250
> @@ -57,7 +57,7 @@ _test_loop()
>
> echo "*** mount loop filesystem"
> loop_dev=$(_create_loop_device $LOOP_IMG)
> - mount $loop_dev $LOOP_MNT
> + _mount $loop_dev $LOOP_MNT
>
> echo "*** preallocate large file"
> $XFS_IO_PROG -f -c "resvsp 0 $fsize" $LOOP_MNT/foo | _filter_io
> diff --git a/tests/xfs/289 b/tests/xfs/289
> index d234f212d49b83..c2216f2826a9d1 100755
> --- a/tests/xfs/289
> +++ b/tests/xfs/289
> @@ -56,7 +56,7 @@ echo "=== xfs_growfs - plain file - should be rejected ==="
> $XFS_GROWFS_PROG $tmpfile 2>&1 | _filter_test_dir
>
> echo "=== mount ==="
> -$MOUNT_PROG -o loop $tmpfile $tmpdir || _fail "!!! failed to loopback mount"
> +_mount -o loop $tmpfile $tmpdir || _fail "!!! failed to loopback mount"
>
> echo "=== xfs_growfs - mounted - check absolute path ==="
> $XFS_GROWFS_PROG -D 8192 $tmpdir | _filter_test_dir > /dev/null
> @@ -79,7 +79,7 @@ $XFS_GROWFS_PROG -D 28672 tmpsymlink.$$ > /dev/null
>
> echo "=== xfs_growfs - bind mount ==="
> mkdir $tmpbind
> -$MOUNT_PROG -o bind $tmpdir $tmpbind
> +_mount -o bind $tmpdir $tmpbind
> $XFS_GROWFS_PROG -D 32768 $tmpbind | _filter_test_dir > /dev/null
>
> echo "=== xfs_growfs - bind mount - relative path ==="
> diff --git a/tests/xfs/300 b/tests/xfs/300
> index c4c3b1ab86c200..534a0e9d059b91 100755
> --- a/tests/xfs/300
> +++ b/tests/xfs/300
> @@ -27,7 +27,7 @@ getenforce | grep -q "Enforcing\|Permissive" || _notrun "SELinux not enabled"
> _scratch_mkfs_xfs -m crc=0 -i size=256 >> $seqres.full 2>&1
>
> # Manually mount to avoid fs-wide context set by default in xfstests
> -mount $SCRATCH_DEV $SCRATCH_MNT
> +_mount $SCRATCH_DEV $SCRATCH_MNT
>
> touch $SCRATCH_MNT/$seq.test
>
> diff --git a/tests/xfs/507 b/tests/xfs/507
> index 52d9b94b4dd903..e1450f4f8f9495 100755
> --- a/tests/xfs/507
> +++ b/tests/xfs/507
> @@ -86,7 +86,7 @@ loop_dev=$(_create_loop_device $loop_file)
>
> _mkfs_dev -d cowextsize=$MAXEXTLEN -l size=256m $loop_dev >> $seqres.full
> mkdir $loop_mount
> -mount $loop_dev $loop_mount
> +_mount $loop_dev $loop_mount
>
> echo "Create crazy huge file"
> huge_file="$loop_mount/a"
> diff --git a/tests/xfs/544 b/tests/xfs/544
> index b7eef51c7fddbe..9e4e0d255bd3c9 100755
> --- a/tests/xfs/544
> +++ b/tests/xfs/544
> @@ -35,7 +35,7 @@ mkdir $TEST_DIR/dest.$seq
> # Test
> echo "*** dump with bind-mounted test ***" >> $seqres.full
>
> -$MOUNT_PROG --bind $TEST_DIR/src.$seq $TEST_DIR/dest.$seq || _fail "Bind mount failed"
> +_mount --bind $TEST_DIR/src.$seq $TEST_DIR/dest.$seq || _fail "Bind mount failed"
>
> $XFSDUMP_PROG -L session -M test -f $tmp.dump $TEST_DIR/dest.$seq \
> >> $seqres.full 2>&1 && echo "dump with bind-mounted should be failed, but passed."
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] treewide: convert all $MOUNT_PROG to _mount
2026-04-16 17:34 ` Zorro Lang
@ 2026-04-16 17:56 ` Darrick J. Wong
0 siblings, 0 replies; 13+ messages in thread
From: Darrick J. Wong @ 2026-04-16 17:56 UTC (permalink / raw)
To: linux-xfs, fstests
On Fri, Apr 17, 2026 at 01:34:17AM +0800, Zorro Lang wrote:
> On Mon, Apr 13, 2026 at 10:51:09AM -0700, Darrick J. Wong wrote:
> > From: Darrick J. Wong <djwong@kernel.org>
> >
> > Going to add some new log scraping functionality when mount failures
> > occur, so we need everyone to use _mount instead of $MOUNT_PROG.
> >
> > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
> > ---
>
> As you're trying to "convert *all* $MOUNT_PROG to _mount", then bring in
> "mountfail" file, I'm wondering what if someone case expects to get a
> failed mount ?
If the test doesn't _fail or fail the golden output checks, the
mountfail file is discarded.
--D
> Thanks,
> Zorro
>
> > common/btrfs | 4 ++--
> > common/dmdelay | 2 +-
> > common/dmerror | 2 +-
> > common/dmlogwrites | 2 +-
> > common/overlay | 6 +++---
> > tests/btrfs/012 | 6 +++---
> > tests/btrfs/075 | 2 +-
> > tests/btrfs/089 | 2 +-
> > tests/btrfs/136 | 4 ++--
> > tests/btrfs/208 | 2 +-
> > tests/btrfs/330 | 2 +-
> > tests/btrfs/335 | 2 +-
> > tests/ext4/032 | 2 +-
> > tests/generic/067 | 4 ++--
> > tests/generic/089 | 2 +-
> > tests/generic/120 | 2 +-
> > tests/generic/306 | 2 +-
> > tests/generic/361 | 2 +-
> > tests/generic/373 | 2 +-
> > tests/generic/374 | 2 +-
> > tests/generic/395 | 4 ++--
> > tests/generic/409 | 6 +++---
> > tests/generic/410 | 8 ++++----
> > tests/generic/411 | 8 ++++----
> > tests/generic/504 | 4 ++--
> > tests/generic/589 | 8 ++++----
> > tests/generic/631 | 2 +-
> > tests/generic/717 | 2 +-
> > tests/overlay/005 | 4 ++--
> > tests/overlay/025 | 2 +-
> > tests/overlay/062 | 2 +-
> > tests/overlay/083 | 6 +++---
> > tests/overlay/086 | 12 ++++++------
> > tests/xfs/044 | 2 +-
> > tests/xfs/049 | 8 ++++----
> > tests/xfs/149 | 4 ++--
> > tests/xfs/206 | 2 +-
> > tests/xfs/250 | 2 +-
> > tests/xfs/289 | 4 ++--
> > tests/xfs/300 | 2 +-
> > tests/xfs/507 | 2 +-
> > tests/xfs/544 | 2 +-
> > 42 files changed, 75 insertions(+), 75 deletions(-)
> >
> >
> > diff --git a/common/btrfs b/common/btrfs
> > index c2d616aa26e4be..30288f07b61a3e 100644
> > --- a/common/btrfs
> > +++ b/common/btrfs
> > @@ -358,7 +358,7 @@ _btrfs_stress_subvolume()
> > mkdir -p $subvol_mnt
> > while [ ! -e $stop_file ]; do
> > $BTRFS_UTIL_PROG subvolume create $btrfs_mnt/$subvol_name
> > - $MOUNT_PROG -o subvol=$subvol_name $btrfs_dev $subvol_mnt
> > + _mount -o subvol=$subvol_name $btrfs_dev $subvol_mnt
> > _unmount $subvol_mnt
> > $BTRFS_UTIL_PROG subvolume delete $btrfs_mnt/$subvol_name
> > done
> > @@ -444,7 +444,7 @@ _btrfs_stress_remount_compress()
> > local btrfs_mnt=$1
> > while true; do
> > for algo in no zlib lzo; do
> > - $MOUNT_PROG -o remount,compress=$algo $btrfs_mnt
> > + _mount -o remount,compress=$algo $btrfs_mnt
> > done
> > done
> > }
> > diff --git a/common/dmdelay b/common/dmdelay
> > index 848afb993faa19..ff0b8adf8bfc72 100644
> > --- a/common/dmdelay
> > +++ b/common/dmdelay
> > @@ -22,7 +22,7 @@ _init_delay()
> > _mount_delay()
> > {
> > _scratch_options mount
> > - $MOUNT_PROG -t $FSTYP `_common_dev_mount_options` $SCRATCH_OPTIONS \
> > + _mount -t $FSTYP `_common_dev_mount_options` $SCRATCH_OPTIONS \
> > $DELAY_DEV $SCRATCH_MNT
> > }
> >
> > diff --git a/common/dmerror b/common/dmerror
> > index 309129c03c8d87..5c99fc1629b4ae 100644
> > --- a/common/dmerror
> > +++ b/common/dmerror
> > @@ -95,7 +95,7 @@ _dmerror_init()
> > _dmerror_mount()
> > {
> > _scratch_options mount
> > - $MOUNT_PROG -t $FSTYP `_common_dev_mount_options $*` $SCRATCH_OPTIONS \
> > + _mount -t $FSTYP `_common_dev_mount_options $*` $SCRATCH_OPTIONS \
> > $DMERROR_DEV $SCRATCH_MNT
> > }
> >
> > diff --git a/common/dmlogwrites b/common/dmlogwrites
> > index a27e1966a933a6..278656269584b3 100644
> > --- a/common/dmlogwrites
> > +++ b/common/dmlogwrites
> > @@ -104,7 +104,7 @@ _log_writes_mkfs()
> > _log_writes_mount()
> > {
> > _scratch_options mount
> > - $MOUNT_PROG -t $FSTYP `_common_dev_mount_options $*` $SCRATCH_OPTIONS \
> > + _mount -t $FSTYP `_common_dev_mount_options $*` $SCRATCH_OPTIONS \
> > $LOGWRITES_DMDEV $SCRATCH_MNT
> > }
> >
> > diff --git a/common/overlay b/common/overlay
> > index 67ae11f883ee68..d32f3219a5285a 100644
> > --- a/common/overlay
> > +++ b/common/overlay
> > @@ -29,13 +29,13 @@ _overlay_mount_dirs()
> > [ -n "$upperdir" ] && [ "$upperdir" != "-" ] && \
> > diropts+=",upperdir=$upperdir,workdir=$workdir"
> >
> > - $MOUNT_PROG -t overlay $diropts `_common_dev_mount_options $*`
> > + _mount -t overlay $diropts `_common_dev_mount_options $*`
> > }
> >
> > # Mount with mnt/dev of scratch mount and custom mount options
> > _overlay_scratch_mount_opts()
> > {
> > - $MOUNT_PROG -t overlay $OVL_BASE_SCRATCH_MNT $SCRATCH_MNT $*
> > + _mount -t overlay $OVL_BASE_SCRATCH_MNT $SCRATCH_MNT $*
> > }
> >
> > # Mount with same options/mnt/dev of scratch mount, but optionally
> > @@ -130,7 +130,7 @@ _overlay_scratch_mount()
> > # By default, libmount merges remount options with old mount options.
> > # overlayfs does not support re-configuring the same mount options.
> > # We workaround this problem with --options-mode ignore.
> > - $MOUNT_PROG $SCRATCH_MNT --options-mode ignore $*
> > + _mount $SCRATCH_MNT --options-mode ignore $*
> > return
> > fi
> >
> > diff --git a/tests/btrfs/012 b/tests/btrfs/012
> > index 6914fba6ebe2cf..b3ca4190ecd117 100755
> > --- a/tests/btrfs/012
> > +++ b/tests/btrfs/012
> > @@ -41,7 +41,7 @@ export SELINUX_MOUNT_OPTIONS=""
> > $MKFS_EXT4_PROG -F -b $BLOCK_SIZE $SCRATCH_DEV > $seqres.full 2>&1 || \
> > _notrun "Could not create ext4 filesystem"
> > # Manual mount so we don't use -t btrfs or selinux context
> > -mount -t ext4 $SCRATCH_DEV $SCRATCH_MNT
> > +_mount -t ext4 $SCRATCH_DEV $SCRATCH_MNT
> > if [ $? -ne 0 -a $BLOCK_SIZE -gt $(_get_page_size) ]; then
> > _notrun "block size $BLOCK_SIZE is not supported by ext4"
> > fi
> > @@ -68,7 +68,7 @@ $E2FSCK_PROG -fn $SCRATCH_MNT/ext2_saved/image >> $seqres.full 2>&1 || \
> >
> > # And the files in that image should match
> > mkdir -p $SCRATCH_MNT/mnt
> > -mount -o loop $SCRATCH_MNT/ext2_saved/image $SCRATCH_MNT/mnt || \
> > +_mount -o loop $SCRATCH_MNT/ext2_saved/image $SCRATCH_MNT/mnt || \
> > _fail "could not loop mount saved ext4 image"
> >
> > echo "Checking saved ext2 image against the original one:"
> > @@ -90,7 +90,7 @@ $E2FSCK_PROG -fn $SCRATCH_DEV >> $seqres.full 2>&1 || \
> > _fail "restored ext4 image is corrupt"
> >
> > # Mount the un-converted ext4 device & check the contents
> > -mount -t ext4 $SCRATCH_DEV $SCRATCH_MNT
> > +_mount -t ext4 $SCRATCH_DEV $SCRATCH_MNT
> > echo "Checking rolled back ext2 against the original one:"
> > $FSSUM_PROG -r $tmp.original $SCRATCH_MNT/$BASENAME
> >
> > diff --git a/tests/btrfs/075 b/tests/btrfs/075
> > index 917993ca2da3a6..737c4ffdd57865 100755
> > --- a/tests/btrfs/075
> > +++ b/tests/btrfs/075
> > @@ -37,7 +37,7 @@ _scratch_mount
> > subvol_mnt=$TEST_DIR/$seq.mnt
> > mkdir -p $subvol_mnt
> > $BTRFS_UTIL_PROG subvolume create $SCRATCH_MNT/subvol >>$seqres.full 2>&1
> > -$MOUNT_PROG -o subvol=subvol $SELINUX_MOUNT_OPTIONS $SCRATCH_DEV $subvol_mnt
> > +_mount -o subvol=subvol $SELINUX_MOUNT_OPTIONS $SCRATCH_DEV $subvol_mnt
> > status=$?
> >
> > exit
> > diff --git a/tests/btrfs/089 b/tests/btrfs/089
> > index 8f8e37b6fde87b..9e8d8ea3a5e097 100755
> > --- a/tests/btrfs/089
> > +++ b/tests/btrfs/089
> > @@ -29,7 +29,7 @@ $BTRFS_UTIL_PROG subvolume set-default $testvol_id "$SCRATCH_MNT" >>$seqres.full
> > # Bind-mount a directory under the default subvolume.
> > mkdir "$SCRATCH_MNT/testvol/testdir"
> > mkdir "$SCRATCH_MNT/testvol/mnt"
> > -mount --bind "$SCRATCH_MNT/testvol/testdir" "$SCRATCH_MNT/testvol/mnt"
> > +_mount --bind "$SCRATCH_MNT/testvol/testdir" "$SCRATCH_MNT/testvol/mnt"
> >
> > # Now attempt to delete the default subvolume.
> > $BTRFS_UTIL_PROG subvolume delete "$SCRATCH_MNT/testvol" >>$seqres.full 2>&1
> > diff --git a/tests/btrfs/136 b/tests/btrfs/136
> > index fd24d3f8c1fa45..97c110981adebb 100755
> > --- a/tests/btrfs/136
> > +++ b/tests/btrfs/136
> > @@ -44,7 +44,7 @@ $MKFS_EXT4_PROG -F -t ext3 -b $BLOCK_SIZE $SCRATCH_DEV > $seqres.full 2>&1 || \
> > _notrun "Could not create ext3 filesystem"
> >
> > # mount and populate non-extent file
> > -mount -t ext3 $SCRATCH_DEV $SCRATCH_MNT
> > +_mount -t ext3 $SCRATCH_DEV $SCRATCH_MNT
> > if [ $? -ne 0 -a $BLOCK_SIZE -gt $(_get_page_size) ]; then
> > _notrun "block size $BLOCK_SIZE is not supported by ext3"
> > fi
> > @@ -57,7 +57,7 @@ $TUNE2FS_PROG -O extents,uninit_bg,dir_index $SCRATCH_DEV >> $seqres.full 2>&1
> > $E2FSCK_PROG -fyD $SCRATCH_DEV >> $seqres.full 2>&1
> >
> > # mount and populate extent file
> > -mount -t ext4 $SCRATCH_DEV $SCRATCH_MNT
> > +_mount -t ext4 $SCRATCH_DEV $SCRATCH_MNT
> > populate_data "$SCRATCH_MNT/ext3_ext4_data/ext4"
> >
> > # Compute md5 of ext3,ext4 files.
> > diff --git a/tests/btrfs/208 b/tests/btrfs/208
> > index 5ea732ae8f71a7..93a999541dab06 100755
> > --- a/tests/btrfs/208
> > +++ b/tests/btrfs/208
> > @@ -45,7 +45,7 @@ _scratch_unmount
> >
> > # Now we mount the subvol2, which makes subvol3 not accessible for this mount
> > # point, but we should be able to delete it using it's subvolume id
> > -$MOUNT_PROG -o subvol=subvol2 $SCRATCH_DEV $SCRATCH_MNT
> > +_mount -o subvol=subvol2 $SCRATCH_DEV $SCRATCH_MNT
> > _delete_and_list subvol3 "Last remaining subvolume:"
> > _scratch_unmount
> >
> > diff --git a/tests/btrfs/330 b/tests/btrfs/330
> > index 3a311a5affc0a0..10c4466707f3a3 100755
> > --- a/tests/btrfs/330
> > +++ b/tests/btrfs/330
> > @@ -17,7 +17,7 @@ _cleanup()
> > # Import common functions.
> > . ./common/filter.btrfs
> >
> > -$MOUNT_PROG -V | grep -q 'fd-based-mount'
> > +_mount -V | grep -q 'fd-based-mount'
> > if [ "$?" -eq 0 ]; then
> > _fixed_by_kernel_commit cda7163d4e3d \
> > "btrfs: fix per-subvolume RO/RW flags with new mount API"
> > diff --git a/tests/btrfs/335 b/tests/btrfs/335
> > index 34764e4aa6c8c1..edc5c0ab3374b8 100755
> > --- a/tests/btrfs/335
> > +++ b/tests/btrfs/335
> > @@ -49,7 +49,7 @@ $BTRFS_UTIL_PROG balance start -mconvert=raid1 $SCRATCH_MNT 2>&1 |\
> >
> > _scratch_unmount
> >
> > -$MOUNT_PROG -t btrfs -odegraded ${devs[0]} $SCRATCH_MNT
> > +_mount -t btrfs -odegraded ${devs[0]} $SCRATCH_MNT
> >
> > $BTRFS_UTIL_PROG device remove --force missing $SCRATCH_MNT >> $seqres.full
> > $BTRFS_UTIL_PROG balance start --full-balance $SCRATCH_MNT >> $seqres.full
> > diff --git a/tests/ext4/032 b/tests/ext4/032
> > index 043ae4f5350530..ef050ec0fb421c 100755
> > --- a/tests/ext4/032
> > +++ b/tests/ext4/032
> > @@ -48,7 +48,7 @@ ext4_online_resize()
> > $seqres.full 2>&1 || _fail "mkfs failed"
> >
> > echo "+++ mount image file" | tee -a $seqres.full
> > - $MOUNT_PROG -t ${FSTYP} ${LOOP_DEVICE} ${IMG_MNT} > \
> > + _mount -t ${FSTYP} ${LOOP_DEVICE} ${IMG_MNT} > \
> > /dev/null 2>&1 || _fail "mount failed"
> >
> > echo "+++ resize fs to $final_size" | tee -a $seqres.full
> > diff --git a/tests/generic/067 b/tests/generic/067
> > index b45ae834f918d2..99d10ee0be0a0f 100755
> > --- a/tests/generic/067
> > +++ b/tests/generic/067
> > @@ -34,7 +34,7 @@ mount_nonexistent_mnt()
> > {
> > echo "# mount to nonexistent mount point" >>$seqres.full
> > rm -rf $TEST_DIR/nosuchdir
> > - $MOUNT_PROG $SCRATCH_DEV $TEST_DIR/nosuchdir >>$seqres.full 2>&1
> > + _mount $SCRATCH_DEV $TEST_DIR/nosuchdir >>$seqres.full 2>&1
> > }
> >
> > # fs driver should be able to handle mounting a free loop device gracefully xfs
> > @@ -60,7 +60,7 @@ mount_wrong_fstype()
> > fs=xfs
> > fi
> > echo "# mount with wrong fs type" >>$seqres.full
> > - $MOUNT_PROG -t $fs $SCRATCH_DEV $SCRATCH_MNT >>$seqres.full 2>&1
> > + _mount -t $fs $SCRATCH_DEV $SCRATCH_MNT >>$seqres.full 2>&1
> > }
> >
> > # umount a symlink to device, which is not mounted.
> > diff --git a/tests/generic/089 b/tests/generic/089
> > index 89c19484fd7b8a..9998457fb5baf1 100755
> > --- a/tests/generic/089
> > +++ b/tests/generic/089
> > @@ -34,7 +34,7 @@ cd $TEST_DIR
> > rm -fr test
> > mkdir test || exit 1
> > cd $TEST_DIR/test
> > -mount > t_mtab
> > +_mount > t_mtab
> >
> > mtab()
> > {
> > diff --git a/tests/generic/120 b/tests/generic/120
> > index 7527bd4a078423..d11b90b809f240 100755
> > --- a/tests/generic/120
> > +++ b/tests/generic/120
> > @@ -29,7 +29,7 @@ _compare_access_times()
> > cat $tmp.out
> > echo "---------------------------------------------------"
> > $here/src/lstat64 $1
> > - mount | grep $SCRATCH_MNT
> > + _mount | grep $SCRATCH_MNT
> > fi
> >
> > }
> > diff --git a/tests/generic/306 b/tests/generic/306
> > index 8e118472d8bef0..14c07e0bda4afa 100755
> > --- a/tests/generic/306
> > +++ b/tests/generic/306
> > @@ -66,7 +66,7 @@ $XFS_IO_PROG -f -c "pwrite 0 512" $SYMLINK | _filter_xfs_io
> > $XFS_IO_PROG -t -c "pwrite 0 512" $SYMLINK | _filter_xfs_io
> >
> > echo "== write to bind-mounted rw file on ro fs"
> > -mount --bind $TARGET $BINDFILE
> > +_mount --bind $TARGET $BINDFILE
> > # with and without -f (adds O_CREAT)
> > $XFS_IO_PROG -c "pwrite 0 512" $BINDFILE | _filter_xfs_io
> > $XFS_IO_PROG -f -c "pwrite 0 512" $BINDFILE | _filter_xfs_io
> > diff --git a/tests/generic/361 b/tests/generic/361
> > index b584af47540020..70dba3a0ca8b75 100755
> > --- a/tests/generic/361
> > +++ b/tests/generic/361
> > @@ -52,7 +52,7 @@ fi
> > $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
> > +_mount -o remount,ro $fs_mnt >>$seqres.full 2>&1
> >
> > _unmount $fs_mnt &>/dev/null
> > _destroy_loop_device $loop_dev
> > diff --git a/tests/generic/373 b/tests/generic/373
> > index 04ec642518ce70..42bdc1be0757ac 100755
> > --- a/tests/generic/373
> > +++ b/tests/generic/373
> > @@ -42,7 +42,7 @@ blksz=65536
> > sz=$((blksz * blocks))
> >
> > echo "Mount otherdir"
> > -$MOUNT_PROG --bind $SCRATCH_MNT $otherdir
> > +_mount --bind $SCRATCH_MNT $otherdir
> >
> > echo "Create file"
> > _pwrite_byte 0x61 0 $sz $testdir/file >> $seqres.full
> > diff --git a/tests/generic/374 b/tests/generic/374
> > index 9a85091e29886e..8f7d17152c84be 100755
> > --- a/tests/generic/374
> > +++ b/tests/generic/374
> > @@ -41,7 +41,7 @@ blksz=65536
> > sz=$((blocks * blksz))
> >
> > echo "Mount otherdir"
> > -$MOUNT_PROG --bind $SCRATCH_MNT $otherdir
> > +_mount --bind $SCRATCH_MNT $otherdir
> >
> > echo "Create file"
> > _pwrite_byte 0x61 0 $sz $testdir/file >> $seqres.full
> > diff --git a/tests/generic/395 b/tests/generic/395
> > index f9c331adb969ac..261f468f397c8c 100755
> > --- a/tests/generic/395
> > +++ b/tests/generic/395
> > @@ -71,8 +71,8 @@ _scratch_remount ro
> > _set_encpolicy $SCRATCH_MNT/ro_dir |& _filter_scratch
> > _get_encpolicy $SCRATCH_MNT/ro_dir |& _filter_scratch
> > _scratch_remount rw
> > -mount --bind $SCRATCH_MNT $SCRATCH_MNT/ro_bind_mnt
> > -mount -o remount,ro,bind $SCRATCH_MNT/ro_bind_mnt
> > +_mount --bind $SCRATCH_MNT $SCRATCH_MNT/ro_bind_mnt
> > +_mount -o remount,ro,bind $SCRATCH_MNT/ro_bind_mnt
> > _set_encpolicy $SCRATCH_MNT/ro_bind_mnt/ro_dir |& _filter_scratch
> > _get_encpolicy $SCRATCH_MNT/ro_bind_mnt/ro_dir |& _filter_scratch
> > _unmount $SCRATCH_MNT/ro_bind_mnt
> > diff --git a/tests/generic/409 b/tests/generic/409
> > index ac1b14ad60f723..eff7c3584b413b 100755
> > --- a/tests/generic/409
> > +++ b/tests/generic/409
> > @@ -88,7 +88,7 @@ start_test()
> >
> > _scratch_mkfs >$seqres.full 2>&1
> > _get_mount -t $FSTYP $SCRATCH_DEV $MNTHEAD
> > - $MOUNT_PROG --make-"${type}" $MNTHEAD
> > + _mount --make-"${type}" $MNTHEAD
> > mkdir $mpA $mpB $mpC $mpD
> > }
> >
> > @@ -108,9 +108,9 @@ bind_run()
> > echo "bind $source on $dest"
> > _get_mount -t $FSTYP $SCRATCH_DEV $mpA
> > mkdir -p $mpA/dir 2>/dev/null
> > - $MOUNT_PROG --make-shared $mpA
> > + _mount --make-shared $mpA
> > _get_mount --bind $mpA $mpB
> > - $MOUNT_PROG --make-"$source" $mpB
> > + _mount --make-"$source" $mpB
> > # maybe unbindable at here
> > _get_mount --bind $mpB $mpC 2>/dev/null
> > if [ $? -ne 0 ]; then
> > diff --git a/tests/generic/410 b/tests/generic/410
> > index e0d0c57eba2950..69f9dbe97f182d 100755
> > --- a/tests/generic/410
> > +++ b/tests/generic/410
> > @@ -94,7 +94,7 @@ start_test()
> >
> > _scratch_mkfs >>$seqres.full 2>&1
> > _get_mount -t $FSTYP $SCRATCH_DEV $MNTHEAD
> > - $MOUNT_PROG --make-"${type}" $MNTHEAD
> > + _mount --make-"${type}" $MNTHEAD
> > mkdir $mpA $mpB $mpC
> > }
> >
> > @@ -118,14 +118,14 @@ run()
> > echo "make-$cmd a $orgs mount"
> > _get_mount -t $FSTYP $SCRATCH_DEV $mpA
> > mkdir -p $mpA/dir 2>/dev/null
> > - $MOUNT_PROG --make-shared $mpA
> > + _mount --make-shared $mpA
> >
> > # prepare the original status on mpB
> > _get_mount --bind $mpA $mpB
> > # shared&slave status need to do make-slave then make-shared
> > # two operations.
> > for t in $orgs; do
> > - $MOUNT_PROG --make-"$t" $mpB
> > + _mount --make-"$t" $mpB
> > done
> >
> > # "before" for prepare and check original status
> > @@ -146,7 +146,7 @@ run()
> > _put_mount # umount C
> > fi
> > if [ "$i" = "before" ];then
> > - $MOUNT_PROG --make-"${cmd}" $mpB
> > + _mount --make-"${cmd}" $mpB
> > fi
> > done
> >
> > diff --git a/tests/generic/411 b/tests/generic/411
> > index 0a80554cd4d3b9..b099940f3fa704 100755
> > --- a/tests/generic/411
> > +++ b/tests/generic/411
> > @@ -77,7 +77,7 @@ start_test()
> >
> > _scratch_mkfs >$seqres.full 2>&1
> > _get_mount -t $FSTYP $SCRATCH_DEV $MNTHEAD
> > - $MOUNT_PROG --make-"${type}" $MNTHEAD
> > + _mount --make-"${type}" $MNTHEAD
> > mkdir $mpA $mpB $mpC
> > }
> >
> > @@ -100,11 +100,11 @@ crash_test()
> >
> > _get_mount -t $FSTYP $SCRATCH_DEV $mpA
> > mkdir $mpA/mnt1
> > - $MOUNT_PROG --make-shared $mpA
> > + _mount --make-shared $mpA
> > _get_mount --bind $mpA $mpB
> > _get_mount --bind $mpA $mpC
> > - $MOUNT_PROG --make-slave $mpB
> > - $MOUNT_PROG --make-slave $mpC
> > + _mount --make-slave $mpB
> > + _mount --make-slave $mpC
> > _get_mount -t $FSTYP $SCRATCH_DEV $mpA/mnt1
> > mkdir $mpA/mnt1/mnt2
> >
> > diff --git a/tests/generic/504 b/tests/generic/504
> > index 611e6c283e215a..931f231504b702 100755
> > --- a/tests/generic/504
> > +++ b/tests/generic/504
> > @@ -41,7 +41,7 @@ exec {test_fd}> $testfile
> > if [ "$FSTESTS_ISOL" = "privatens" ]; then
> > move_proc="$tmp.procdir"
> > mkdir -p "$move_proc"
> > - mount --move /proc "$move_proc"
> > + _mount --move /proc "$move_proc"
> > fi
> > flock -x $test_fd
> > cat /proc/locks >> $seqres.full
> > @@ -50,7 +50,7 @@ cat /proc/locks >> $seqres.full
> > grep -q ":$tf_inode " /proc/locks || echo "lock info not found"
> >
> > if [ -n "$move_proc" ]; then
> > - mount --move "$move_proc" /proc
> > + _mount --move "$move_proc" /proc
> > fi
> >
> > # success, all done
> > diff --git a/tests/generic/589 b/tests/generic/589
> > index 0384083bbf4251..e7627f26c75996 100755
> > --- a/tests/generic/589
> > +++ b/tests/generic/589
> > @@ -81,12 +81,12 @@ start_test()
> >
> > _get_mount -t $FSTYP $SCRATCH_DEV $SRCHEAD
> > # make sure $SRCHEAD is private
> > - $MOUNT_PROG --make-private $SRCHEAD
> > + _mount --make-private $SRCHEAD
> >
> > _get_mount -t $FSTYP $SCRATCH_DEV $DSTHEAD
> > # test start with a bind, then make-shared $DSTHEAD
> > _get_mount --bind $DSTHEAD $DSTHEAD
> > - $MOUNT_PROG --make-"${type}" $DSTHEAD
> > + _mount --make-"${type}" $DSTHEAD
> > mkdir $mpA $mpB $mpC $mpD
> > }
> >
> > @@ -106,10 +106,10 @@ move_run()
> > echo "move $source to $dest"
> > _get_mount -t $FSTYP $SCRATCH_DEV $mpA
> > mkdir -p $mpA/dir 2>/dev/null
> > - $MOUNT_PROG --make-shared $mpA
> > + _mount --make-shared $mpA
> > # need a peer for slave later
> > _get_mount --bind $mpA $mpB
> > - $MOUNT_PROG --make-"$source" $mpB
> > + _mount --make-"$source" $mpB
> > # maybe unbindable at here
> > _get_mount --move $mpB $mpC 2>/dev/null
> > if [ $? -ne 0 ]; then
> > diff --git a/tests/generic/631 b/tests/generic/631
> > index 8b12b8f247ee81..96e917e8c25314 100755
> > --- a/tests/generic/631
> > +++ b/tests/generic/631
> > @@ -80,7 +80,7 @@ worker() {
> > mkdir $SCRATCH_MNT/workdir$tag
> > mkdir $SCRATCH_MNT/upperdir$tag
> >
> > - mount -t overlay overlay -o "$l,$u,$w,$i" $mergedir
> > + _mount -t overlay overlay -o "$l,$u,$w,$i" $mergedir
> > mv $mergedir/etc/access.conf $mergedir/etc/access.conf.bak
> > touch $mergedir/etc/access.conf
> > mv $mergedir/etc/access.conf $mergedir/etc/access.conf.bak
> > diff --git a/tests/generic/717 b/tests/generic/717
> > index 2ecd2888d4590e..acbe787c5e42c1 100755
> > --- a/tests/generic/717
> > +++ b/tests/generic/717
> > @@ -82,7 +82,7 @@ $XFS_IO_PROG -c "exchangerange $SCRATCH_MNT/c" $dir/a
> >
> > echo Files on different mounts
> > mkdir -p $SCRATCH_MNT/xyz
> > -mount --bind $dir $SCRATCH_MNT/xyz --bind
> > +_mount --bind $dir $SCRATCH_MNT/xyz --bind
> > _pwrite_byte 0x60 0 $((blksz * (nrblks + 2))) $dir/c >> $seqres.full
> > $XFS_IO_PROG -c "exchangerange $SCRATCH_MNT/xyz/c" $dir/a
> > _unmount $SCRATCH_MNT/xyz
> > diff --git a/tests/overlay/005 b/tests/overlay/005
> > index d396b5cb213048..809154d9c66caa 100755
> > --- a/tests/overlay/005
> > +++ b/tests/overlay/005
> > @@ -51,8 +51,8 @@ $MKFS_XFS_PROG -f -n ftype=1 $upper_loop_dev >>$seqres.full 2>&1
> > # mount underlying xfs
> > mkdir -p ${OVL_BASE_SCRATCH_MNT}/lowermnt
> > mkdir -p ${OVL_BASE_SCRATCH_MNT}/uppermnt
> > -$MOUNT_PROG $fs_loop_dev ${OVL_BASE_SCRATCH_MNT}/lowermnt
> > -$MOUNT_PROG $upper_loop_dev ${OVL_BASE_SCRATCH_MNT}/uppermnt
> > +_mount $fs_loop_dev ${OVL_BASE_SCRATCH_MNT}/lowermnt
> > +_mount $upper_loop_dev ${OVL_BASE_SCRATCH_MNT}/uppermnt
> >
> > # prepare dirs
> > mkdir -p ${OVL_BASE_SCRATCH_MNT}/lowermnt/lower
> > diff --git a/tests/overlay/025 b/tests/overlay/025
> > index dc819a39348b69..6ba46191b557be 100755
> > --- a/tests/overlay/025
> > +++ b/tests/overlay/025
> > @@ -36,7 +36,7 @@ _require_extra_fs tmpfs
> > # create a tmpfs in $TEST_DIR
> > tmpfsdir=$TEST_DIR/tmpfs
> > mkdir -p $tmpfsdir
> > -$MOUNT_PROG -t tmpfs tmpfs $tmpfsdir
> > +_mount -t tmpfs tmpfs $tmpfsdir
> >
> > mkdir -p $tmpfsdir/{lower,upper,work,mnt}
> > mkdir -p -m 0 $tmpfsdir/upper/testd
> > diff --git a/tests/overlay/062 b/tests/overlay/062
> > index e44628b7459bfb..9a1db7419c4ca2 100755
> > --- a/tests/overlay/062
> > +++ b/tests/overlay/062
> > @@ -60,7 +60,7 @@ lowertestdir=$lower2/testdir
> > create_test_files $lowertestdir
> >
> > # bind mount to pin lower test dir dentry to dcache
> > -$MOUNT_PROG --bind $lowertestdir $lowertestdir
> > +_mount --bind $lowertestdir $lowertestdir
> >
> > # For non-upper overlay mount, nfs_export requires disabling redirect_dir.
> > _overlay_scratch_mount_opts \
> > diff --git a/tests/overlay/083 b/tests/overlay/083
> > index d037d4c858e6a6..56e02f8cc77d73 100755
> > --- a/tests/overlay/083
> > +++ b/tests/overlay/083
> > @@ -40,14 +40,14 @@ mkdir -p "$lowerdir_spaces" "$lowerdir_colons" "$lowerdir_commas"
> >
> > # _overlay_mount_* helpers do not handle special chars well, so execute mount directly.
> > # if escaped colons are not parsed correctly, mount will fail.
> > -$MOUNT_PROG -t overlay ovl_esc_test $SCRATCH_MNT \
> > +_mount -t overlay ovl_esc_test $SCRATCH_MNT \
> > -o"upperdir=$upperdir,workdir=$workdir" \
> > -o"lowerdir=$lowerdir_colons_esc:$lowerdir_spaces" \
> > 2>&1 | tee -a $seqres.full
> >
> > # if spaces are not escaped when showing mount options,
> > # mount command will not show the word 'spaces' after the spaces
> > -$MOUNT_PROG -t overlay | grep ovl_esc_test | tee -a $seqres.full | grep -v spaces && \
> > +_mount -t overlay | grep ovl_esc_test | tee -a $seqres.full | grep -v spaces && \
> > echo "ERROR: escaped spaces truncated from lowerdir mount option"
> >
> > # Re-create the upper/work dirs to mount them with a different lower
> > @@ -65,7 +65,7 @@ mkdir -p "$upperdir" "$workdir"
> > # and this test will fail, but the failure would indicate a libmount issue, not
> > # a kernel issue. Therefore, force libmount to use mount(2) syscall, so we only
> > # test the kernel fix.
> > -LIBMOUNT_FORCE_MOUNT2=always $MOUNT_PROG -t overlay $OVL_BASE_SCRATCH_DEV $SCRATCH_MNT \
> > +LIBMOUNT_FORCE_MOUNT2=always _mount -t overlay $OVL_BASE_SCRATCH_DEV $SCRATCH_MNT \
> > -o"upperdir=$upperdir,workdir=$workdir,lowerdir=$lowerdir_commas_esc" 2>> $seqres.full || \
> > echo "ERROR: incorrect parsing of escaped comma in lowerdir mount option"
> >
> > diff --git a/tests/overlay/086 b/tests/overlay/086
> > index 9c8a00588595f6..23c56d074ff34a 100755
> > --- a/tests/overlay/086
> > +++ b/tests/overlay/086
> > @@ -33,21 +33,21 @@ mkdir -p "$lowerdir_spaces" "$lowerdir_colons"
> > # _overlay_mount_* helpers do not handle lowerdir+,datadir+, so execute mount directly.
> >
> > # check illegal combinations and order of lowerdir,lowerdir+,datadir+
> > -$MOUNT_PROG -t overlay none $SCRATCH_MNT \
> > +_mount -t overlay none $SCRATCH_MNT \
> > -o"lowerdir=$lowerdir,lowerdir+=$lowerdir_colons" \
> > 2>> $seqres.full && \
> > echo "ERROR: invalid combination of lowerdir and lowerdir+ mount options"
> >
> > $UMOUNT_PROG $SCRATCH_MNT 2>/dev/null
> >
> > -$MOUNT_PROG -t overlay none $SCRATCH_MNT \
> > +_mount -t overlay none $SCRATCH_MNT \
> > -o"lowerdir=$lowerdir,datadir+=$lowerdir_colons" \
> > -o redirect_dir=follow,metacopy=on 2>> $seqres.full && \
> > echo "ERROR: invalid combination of lowerdir and datadir+ mount options"
> >
> > $UMOUNT_PROG $SCRATCH_MNT 2>/dev/null
> >
> > -$MOUNT_PROG -t overlay none $SCRATCH_MNT \
> > +_mount -t overlay none $SCRATCH_MNT \
> > -o"datadir+=$lowerdir,lowerdir+=$lowerdir_colons" \
> > -o redirect_dir=follow,metacopy=on 2>> $seqres.full && \
> > echo "ERROR: invalid order of lowerdir+ and datadir+ mount options"
> > @@ -55,7 +55,7 @@ $MOUNT_PROG -t overlay none $SCRATCH_MNT \
> > $UMOUNT_PROG $SCRATCH_MNT 2>/dev/null
> >
> > # mount is expected to fail with escaped colons.
> > -$MOUNT_PROG -t overlay none $SCRATCH_MNT \
> > +_mount -t overlay none $SCRATCH_MNT \
> > -o"lowerdir+=$lowerdir_colons_esc" \
> > 2>> $seqres.full && \
> > echo "ERROR: incorrect parsing of escaped colons in lowerdir+ mount option"
> > @@ -63,14 +63,14 @@ $MOUNT_PROG -t overlay none $SCRATCH_MNT \
> > $UMOUNT_PROG $SCRATCH_MNT 2>/dev/null
> >
> > # mount is expected to succeed without escaped colons.
> > -$MOUNT_PROG -t overlay ovl_esc_test $SCRATCH_MNT \
> > +_mount -t overlay ovl_esc_test $SCRATCH_MNT \
> > -o"lowerdir+=$lowerdir_colons,datadir+=$lowerdir_spaces" \
> > -o redirect_dir=follow,metacopy=on \
> > 2>&1 | tee -a $seqres.full
> >
> > # if spaces are not escaped when showing mount options,
> > # mount command will not show the word 'spaces' after the spaces
> > -$MOUNT_PROG -t overlay | grep ovl_esc_test | tee -a $seqres.full | \
> > +_mount -t overlay | grep ovl_esc_test | tee -a $seqres.full | \
> > grep -q 'datadir+'.*spaces || \
> > echo "ERROR: escaped spaces truncated from datadir+ mount option"
> >
> > diff --git a/tests/xfs/044 b/tests/xfs/044
> > index 3ecb3479302e22..e8280f382ae3b6 100755
> > --- a/tests/xfs/044
> > +++ b/tests/xfs/044
> > @@ -49,7 +49,7 @@ _check_no_mount()
> > _check_require_logdev()
> > {
> > echo " *** mount without logdev (expect failure)"
> > - if mount -t xfs $SCRATCH_DEV $SCRATCH_MNT >$tmp.err 2>&1
> > + if _mount -t xfs $SCRATCH_DEV $SCRATCH_MNT >$tmp.err 2>&1
> > then
> > cat $tmp.err
> > echo " !!! mount succeeded (expecting failure)"
> > diff --git a/tests/xfs/049 b/tests/xfs/049
> > index a3f478fa9351ab..64667a0d8baab2 100755
> > --- a/tests/xfs/049
> > +++ b/tests/xfs/049
> > @@ -21,7 +21,7 @@ _cleanup()
> >
> > if [ -w $seqres.full ]; then
> > echo "--- mounts at end (after cleanup)" >> $seqres.full
> > - mount >> $seqres.full
> > + _mount >> $seqres.full
> > fi
> > }
> >
> > @@ -47,14 +47,14 @@ echo "(dev=$SCRATCH_DEV, mount=$SCRATCH_MNT)" >> $seqres.full
> > echo "" >> $seqres.full
> >
> > echo "--- mounts" >> $seqres.full
> > -mount >> $seqres.full
> > +_mount >> $seqres.full
> >
> > _log "Create ext2 fs on scratch"
> > mkfs -t ext2 -F $SCRATCH_DEV >> $seqres.full 2>&1 \
> > || _fail "!!! failed to mkfs ext2"
> >
> > _log "Mount ext2 fs on scratch"
> > -mount -t ext2 $SCRATCH_DEV $SCRATCH_MNT >> $seqres.full 2>&1 \
> > +_mount -t ext2 $SCRATCH_DEV $SCRATCH_MNT >> $seqres.full 2>&1 \
> > || _fail "!!! failed to mount"
> >
> > _log "Create xfs fs in file on scratch"
> > @@ -114,7 +114,7 @@ _destroy_loop_device $loop_dev1
> > unset loop_dev1
> >
> > echo "--- mounts at end (before cleanup)" >> $seqres.full
> > -mount >> $seqres.full
> > +_mount >> $seqres.full
> >
> > # success, all done
> > status=0
> > diff --git a/tests/xfs/149 b/tests/xfs/149
> > index 28dfc7f04c1773..baf6e22b98e289 100755
> > --- a/tests/xfs/149
> > +++ b/tests/xfs/149
> > @@ -64,7 +64,7 @@ $XFS_GROWFS_PROG $loop_symlink 2>&1 | sed -e s:$loop_symlink:LOOPSYMLINK:
> > # These mounted operations should pass
> >
> > echo "=== mount ==="
> > -$MOUNT_PROG $loop_dev $mntdir || _fail "!!! failed to loopback mount"
> > +_mount $loop_dev $mntdir || _fail "!!! failed to loopback mount"
> >
> > echo "=== xfs_growfs - check device node ==="
> > $XFS_GROWFS_PROG -D 8192 $loop_dev > /dev/null
> > @@ -76,7 +76,7 @@ echo "=== unmount ==="
> > _unmount $mntdir || _fail "!!! failed to unmount"
> >
> > echo "=== mount device symlink ==="
> > -$MOUNT_PROG $loop_symlink $mntdir || _fail "!!! failed to loopback mount"
> > +_mount $loop_symlink $mntdir || _fail "!!! failed to loopback mount"
> >
> > echo "=== xfs_growfs - check device symlink ==="
> > $XFS_GROWFS_PROG -D 16384 $loop_symlink > /dev/null
> > diff --git a/tests/xfs/206 b/tests/xfs/206
> > index bfd2dee939ddd7..a515c6c8838cff 100755
> > --- a/tests/xfs/206
> > +++ b/tests/xfs/206
> > @@ -75,7 +75,7 @@ echo "=== mkfs.xfs ==="
> > mkfs.xfs -f -bsize=4096 -l size=32m -dagsize=76288719b,size=3905982455b \
> > $tmpfile | mkfs_filter
> >
> > -mount -o loop $tmpfile $tmpdir || _fail "!!! failed to loopback mount"
> > +_mount -o loop $tmpfile $tmpdir || _fail "!!! failed to loopback mount"
> >
> > # see what happens when we growfs it
> > echo "=== xfs_growfs ==="
> > diff --git a/tests/xfs/250 b/tests/xfs/250
> > index 2554e1e91c4c6f..0c3f6f075c1cb2 100755
> > --- a/tests/xfs/250
> > +++ b/tests/xfs/250
> > @@ -57,7 +57,7 @@ _test_loop()
> >
> > echo "*** mount loop filesystem"
> > loop_dev=$(_create_loop_device $LOOP_IMG)
> > - mount $loop_dev $LOOP_MNT
> > + _mount $loop_dev $LOOP_MNT
> >
> > echo "*** preallocate large file"
> > $XFS_IO_PROG -f -c "resvsp 0 $fsize" $LOOP_MNT/foo | _filter_io
> > diff --git a/tests/xfs/289 b/tests/xfs/289
> > index d234f212d49b83..c2216f2826a9d1 100755
> > --- a/tests/xfs/289
> > +++ b/tests/xfs/289
> > @@ -56,7 +56,7 @@ echo "=== xfs_growfs - plain file - should be rejected ==="
> > $XFS_GROWFS_PROG $tmpfile 2>&1 | _filter_test_dir
> >
> > echo "=== mount ==="
> > -$MOUNT_PROG -o loop $tmpfile $tmpdir || _fail "!!! failed to loopback mount"
> > +_mount -o loop $tmpfile $tmpdir || _fail "!!! failed to loopback mount"
> >
> > echo "=== xfs_growfs - mounted - check absolute path ==="
> > $XFS_GROWFS_PROG -D 8192 $tmpdir | _filter_test_dir > /dev/null
> > @@ -79,7 +79,7 @@ $XFS_GROWFS_PROG -D 28672 tmpsymlink.$$ > /dev/null
> >
> > echo "=== xfs_growfs - bind mount ==="
> > mkdir $tmpbind
> > -$MOUNT_PROG -o bind $tmpdir $tmpbind
> > +_mount -o bind $tmpdir $tmpbind
> > $XFS_GROWFS_PROG -D 32768 $tmpbind | _filter_test_dir > /dev/null
> >
> > echo "=== xfs_growfs - bind mount - relative path ==="
> > diff --git a/tests/xfs/300 b/tests/xfs/300
> > index c4c3b1ab86c200..534a0e9d059b91 100755
> > --- a/tests/xfs/300
> > +++ b/tests/xfs/300
> > @@ -27,7 +27,7 @@ getenforce | grep -q "Enforcing\|Permissive" || _notrun "SELinux not enabled"
> > _scratch_mkfs_xfs -m crc=0 -i size=256 >> $seqres.full 2>&1
> >
> > # Manually mount to avoid fs-wide context set by default in xfstests
> > -mount $SCRATCH_DEV $SCRATCH_MNT
> > +_mount $SCRATCH_DEV $SCRATCH_MNT
> >
> > touch $SCRATCH_MNT/$seq.test
> >
> > diff --git a/tests/xfs/507 b/tests/xfs/507
> > index 52d9b94b4dd903..e1450f4f8f9495 100755
> > --- a/tests/xfs/507
> > +++ b/tests/xfs/507
> > @@ -86,7 +86,7 @@ loop_dev=$(_create_loop_device $loop_file)
> >
> > _mkfs_dev -d cowextsize=$MAXEXTLEN -l size=256m $loop_dev >> $seqres.full
> > mkdir $loop_mount
> > -mount $loop_dev $loop_mount
> > +_mount $loop_dev $loop_mount
> >
> > echo "Create crazy huge file"
> > huge_file="$loop_mount/a"
> > diff --git a/tests/xfs/544 b/tests/xfs/544
> > index b7eef51c7fddbe..9e4e0d255bd3c9 100755
> > --- a/tests/xfs/544
> > +++ b/tests/xfs/544
> > @@ -35,7 +35,7 @@ mkdir $TEST_DIR/dest.$seq
> > # Test
> > echo "*** dump with bind-mounted test ***" >> $seqres.full
> >
> > -$MOUNT_PROG --bind $TEST_DIR/src.$seq $TEST_DIR/dest.$seq || _fail "Bind mount failed"
> > +_mount --bind $TEST_DIR/src.$seq $TEST_DIR/dest.$seq || _fail "Bind mount failed"
> >
> > $XFSDUMP_PROG -L session -M test -f $tmp.dump $TEST_DIR/dest.$seq \
> > >> $seqres.full 2>&1 && echo "dump with bind-mounted should be failed, but passed."
> >
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/2] check: capture dmesg of mount failures if test fails
2026-04-13 17:51 ` [PATCH 2/2] check: capture dmesg of mount failures if test fails Darrick J. Wong
2026-04-14 7:59 ` Christoph Hellwig
@ 2026-04-16 17:56 ` Zorro Lang
2026-04-16 18:57 ` Darrick J. Wong
2026-04-16 19:15 ` [PATCH v1.1 " Darrick J. Wong
2 siblings, 1 reply; 13+ messages in thread
From: Zorro Lang @ 2026-04-16 17:56 UTC (permalink / raw)
To: Darrick J. Wong; +Cc: linux-xfs, fstests
On Mon, Apr 13, 2026 at 10:51:25AM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
>
> Capture the kernel output after a mount failure occurs. If the test
> itself fails, then keep the logging output for further diagnosis.
>
> Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
> ---
> check | 22 +++++++++++++++++++++-
> common/rc | 26 +++++++++++++++++++++++++-
> common/report | 8 ++++++++
> doc/xunit.xsd | 12 +++++++++++-
> tests/selftest/008 | 20 ++++++++++++++++++++
> tests/selftest/008.out | 1 +
> 6 files changed, 86 insertions(+), 3 deletions(-)
> create mode 100755 tests/selftest/008
> create mode 100644 tests/selftest/008.out
>
>
> diff --git a/check b/check
> index cd7a79347eac28..c37921ea58e558 100755
> --- a/check
> +++ b/check
> @@ -608,7 +608,7 @@ _stash_fail_loop_files() {
> local seq_prefix="${REPORT_DIR}/${1}"
> local cp_suffix="$2"
>
> - for i in ".full" ".dmesg" ".out.bad" ".notrun" ".core" ".hints"; do
> + for i in ".full" ".dmesg" ".out.bad" ".notrun" ".core" ".hints" ".mountfail"; do
> rm -f "${seq_prefix}${i}${cp_suffix}"
> if [ -f "${seq_prefix}${i}" ]; then
> cp "${seq_prefix}${i}" "${seq_prefix}${i}${cp_suffix}"
> @@ -982,6 +982,7 @@ function run_section()
> echo -n " $seqnum -- "
> cat $seqres.notrun
> tc_status="notrun"
> + rm -f "$seqres.mountfail?"
> _stash_test_status "$seqnum" "$tc_status"
>
> # Unmount the scratch fs so that we can wipe the scratch
> @@ -1045,6 +1046,7 @@ function run_section()
> if [ ! -f $seq.out ]; then
> _dump_err "no qualified output"
> tc_status="fail"
> + rm -f "$seqres.mountfail?"
> _stash_test_status "$seqnum" "$tc_status"
> continue;
> fi
> @@ -1081,6 +1083,24 @@ function run_section()
> rm -f $seqres.hints
> fi
> fi
> +
> + if [ -f "$seqres.mountfail?" ]; then
> + if [ "$tc_status" = "fail" ]; then
> + # Let the user know if there were mount
> + # failures on a test that failed because that
> + # could be interesting.
> + mv "$seqres.mountfail?" "$seqres.mountfail"
> + _dump_err "check: possible mount failures (see $seqres.mountfail)"
> + test -f $seqres.mountfail && \
> + maybe_compress_logfile $seqres.mountfail $MAX_MOUNTFAIL_SIZE
^^^^^^^^^^^^^^^^^^^^^^
What's the "maybe_compress_logfile" ?
> + else
> + # Don't retain mount failure logs for tests
> + # that pass or were skipped because some tests
> + # intentionally drive mount failures.
> + rm -f "$seqres.mountfail?"
> + fi
> + fi
> +
> _stash_test_status "$seqnum" "$tc_status"
> done
>
> diff --git a/common/rc b/common/rc
> index 5fe44e2158ffb3..18ceda1b32cd63 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -288,9 +288,33 @@ _get_hugepagesize()
> awk '/Hugepagesize/ {print $2 * 1024}' /proc/meminfo
> }
>
> +# Does dmesg have a --since flag?
> +_dmesg_detect_since()
> +{
> + if [ -z "$DMESG_HAS_SINCE" ]; then
> + test "$DMESG_HAS_SINCE" = "yes"
^^^^^^^^^^^^^^^
I can't find you use this parameter anywhere. But you do:
if _dmesg_detect_since; then
dmesg --since '30s ago' >> "$seqres.mountfail?"
else
dmesg | tail -n 100 >> "$seqres.mountfail?"
fi
do you want to treat this function as below?
_has_dmesg_since_option()
{
if grep -q -- --since <(dmesg --help);then
return 0
fi
return 1
}
> + return
> + elif dmesg --help | grep -q -- --since; then
> + DMESG_HAS_SINCE=yes
> + else
> + DMESG_HAS_SINCE=no
> + fi
> +}
> +
> _mount()
> {
> - $MOUNT_PROG $*
> + $MOUNT_PROG $*
> + ret=$?
> + if [ "$ret" -ne 0 ]; then
> + echo "\"$MOUNT_PROG $*\" failed at $(date)" >> "$seqres.mountfail?"
> + if _dmesg_detect_since; then
> + dmesg --since '30s ago' >> "$seqres.mountfail?"
> + else
> + dmesg | tail -n 100 >> "$seqres.mountfail?"
> + fi
> + fi
> +
> + return $ret
> }
>
> # Call _mount to do mount operation but also save mountpoint to
> diff --git a/common/report b/common/report
> index 7128bbebac8b75..a41a58f790b784 100644
> --- a/common/report
> +++ b/common/report
> @@ -199,6 +199,7 @@ _xunit_make_testcase_report()
> local out_src="${SRC_DIR}/${test_name}.out"
> local full_file="${REPORT_DIR}/${test_name}.full"
> local dmesg_file="${REPORT_DIR}/${test_name}.dmesg"
> + local mountfail_file="${REPORT_DIR}/${test_name}.mountfail"
> local outbad_file="${REPORT_DIR}/${test_name}.out.bad"
> if [ -z "$_err_msg" ]; then
> _err_msg="Test $test_name failed, reason unknown"
> @@ -225,6 +226,13 @@ _xunit_make_testcase_report()
> printf ']]>\n' >>$report
> echo -e "\t\t</system-err>" >> $report
> fi
> + if [ -z "$quiet" -a -f "$mountfail_file" ]; then
> + echo -e "\t\t<mount-failure>" >> $report
> + printf '<![CDATA[\n' >>$report
> + cat "$mountfail_file" | tr -dc '[:print:][:space:]' | encode_cdata >>$report
> + printf ']]>\n' >>$report
> + echo -e "\t\t</mount-failure>" >> $report
> + fi
> ;;
> *)
> echo -e "\t\t<failure message=\"Unknown test_status=$test_status\" type=\"TestFail\"/>" >> $report
> diff --git a/doc/xunit.xsd b/doc/xunit.xsd
> index d287eaf5a25fb6..efe0badbb338b5 100644
> --- a/doc/xunit.xsd
> +++ b/doc/xunit.xsd
> @@ -131,7 +131,7 @@
> </xs:complexType>
> </xs:element>
> </xs:choice>
> - <xs:choice minOccurs="0" maxOccurs="3">
> + <xs:choice minOccurs="0" maxOccurs="4">
> <xs:element name="system-out" minOccurs="0" maxOccurs="1">
> <xs:annotation>
> <xs:documentation xml:lang="en">Data that was written to the .full log file while the test was executed.</xs:documentation>
> @@ -162,6 +162,16 @@
> </xs:restriction>
> </xs:simpleType>
> </xs:element>
> + <xs:element name="mount-failure" minOccurs="0" maxOccurs="1">
> + <xs:annotation>
> + <xs:documentation xml:lang="en">Kernel log recorded when mount failed.</xs:documentation>
> + </xs:annotation>
> + <xs:simpleType>
> + <xs:restriction base="pre-string">
> + <xs:whiteSpace value="preserve"/>
> + </xs:restriction>
> + </xs:simpleType>
> + </xs:element>
> </xs:choice>
> </xs:sequence>
> <xs:attribute name="name" type="xs:token" use="required">
> diff --git a/tests/selftest/008 b/tests/selftest/008
> new file mode 100755
> index 00000000000000..bcd1f13ed27778
> --- /dev/null
> +++ b/tests/selftest/008
> @@ -0,0 +1,20 @@
> +#! /bin/bash
> +# SPDX-License-Identifier: GPL-2.0
> +# Copyright (c) 2024-2026 Oracle. All Rights Reserved.
> +#
> +# FS QA Test 008
> +#
> +# Test mount failure capture.
> +#
> +. ./common/preamble
> +_begin_fstest selftest
> +
> +_require_command "$WIPEFS_PROG" wipefs
> +_require_scratch
> +
> +$WIPEFS_PROG -a $SCRATCH_DEV
> +_scratch_mount &>> $seqres.full
> +
echo "Silence is golden"
> +# success, all done
> +status=0
> +exit
> diff --git a/tests/selftest/008.out b/tests/selftest/008.out
> new file mode 100644
> index 00000000000000..aaff95f3f48372
> --- /dev/null
> +++ b/tests/selftest/008.out
> @@ -0,0 +1 @@
> +QA output created by 008
Silence is golden
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/2] check: capture dmesg of mount failures if test fails
2026-04-16 17:56 ` Zorro Lang
@ 2026-04-16 18:57 ` Darrick J. Wong
0 siblings, 0 replies; 13+ messages in thread
From: Darrick J. Wong @ 2026-04-16 18:57 UTC (permalink / raw)
To: linux-xfs, fstests
On Fri, Apr 17, 2026 at 01:56:23AM +0800, Zorro Lang wrote:
> On Mon, Apr 13, 2026 at 10:51:25AM -0700, Darrick J. Wong wrote:
> > From: Darrick J. Wong <djwong@kernel.org>
> >
> > Capture the kernel output after a mount failure occurs. If the test
> > itself fails, then keep the logging output for further diagnosis.
> >
> > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
> > ---
> > check | 22 +++++++++++++++++++++-
> > common/rc | 26 +++++++++++++++++++++++++-
> > common/report | 8 ++++++++
> > doc/xunit.xsd | 12 +++++++++++-
> > tests/selftest/008 | 20 ++++++++++++++++++++
> > tests/selftest/008.out | 1 +
> > 6 files changed, 86 insertions(+), 3 deletions(-)
> > create mode 100755 tests/selftest/008
> > create mode 100644 tests/selftest/008.out
> >
> >
> > diff --git a/check b/check
> > index cd7a79347eac28..c37921ea58e558 100755
> > --- a/check
> > +++ b/check
> > @@ -608,7 +608,7 @@ _stash_fail_loop_files() {
> > local seq_prefix="${REPORT_DIR}/${1}"
> > local cp_suffix="$2"
> >
> > - for i in ".full" ".dmesg" ".out.bad" ".notrun" ".core" ".hints"; do
> > + for i in ".full" ".dmesg" ".out.bad" ".notrun" ".core" ".hints" ".mountfail"; do
> > rm -f "${seq_prefix}${i}${cp_suffix}"
> > if [ -f "${seq_prefix}${i}" ]; then
> > cp "${seq_prefix}${i}" "${seq_prefix}${i}${cp_suffix}"
> > @@ -982,6 +982,7 @@ function run_section()
> > echo -n " $seqnum -- "
> > cat $seqres.notrun
> > tc_status="notrun"
> > + rm -f "$seqres.mountfail?"
> > _stash_test_status "$seqnum" "$tc_status"
> >
> > # Unmount the scratch fs so that we can wipe the scratch
> > @@ -1045,6 +1046,7 @@ function run_section()
> > if [ ! -f $seq.out ]; then
> > _dump_err "no qualified output"
> > tc_status="fail"
> > + rm -f "$seqres.mountfail?"
> > _stash_test_status "$seqnum" "$tc_status"
> > continue;
> > fi
> > @@ -1081,6 +1083,24 @@ function run_section()
> > rm -f $seqres.hints
> > fi
> > fi
> > +
> > + if [ -f "$seqres.mountfail?" ]; then
> > + if [ "$tc_status" = "fail" ]; then
> > + # Let the user know if there were mount
> > + # failures on a test that failed because that
> > + # could be interesting.
> > + mv "$seqres.mountfail?" "$seqres.mountfail"
> > + _dump_err "check: possible mount failures (see $seqres.mountfail)"
> > + test -f $seqres.mountfail && \
> > + maybe_compress_logfile $seqres.mountfail $MAX_MOUNTFAIL_SIZE
> ^^^^^^^^^^^^^^^^^^^^^^
> What's the "maybe_compress_logfile" ?
Oops, that's part of another debugging patch that isn't in this batch.
I'll clear it out.
> > + else
> > + # Don't retain mount failure logs for tests
> > + # that pass or were skipped because some tests
> > + # intentionally drive mount failures.
> > + rm -f "$seqres.mountfail?"
> > + fi
> > + fi
> > +
> > _stash_test_status "$seqnum" "$tc_status"
> > done
> >
> > diff --git a/common/rc b/common/rc
> > index 5fe44e2158ffb3..18ceda1b32cd63 100644
> > --- a/common/rc
> > +++ b/common/rc
> > @@ -288,9 +288,33 @@ _get_hugepagesize()
> > awk '/Hugepagesize/ {print $2 * 1024}' /proc/meminfo
> > }
> >
> > +# Does dmesg have a --since flag?
> > +_dmesg_detect_since()
> > +{
> > + if [ -z "$DMESG_HAS_SINCE" ]; then
> > + test "$DMESG_HAS_SINCE" = "yes"
> ^^^^^^^^^^^^^^^
> I can't find you use this parameter anywhere. But you do:
That's exactly where DMESG_HAS_SINCE gets used.
>
> if _dmesg_detect_since; then
> dmesg --since '30s ago' >> "$seqres.mountfail?"
> else
> dmesg | tail -n 100 >> "$seqres.mountfail?"
> fi
>
> do you want to treat this function as below?
>
> _has_dmesg_since_option()
> {
> if grep -q -- --since <(dmesg --help);then
> return 0
> fi
> return 1
> }
_has_dmesg_since_option()
{
grep -q -- --since <(dmesg --help)
}
would be shorter?
>
> > + return
> > + elif dmesg --help | grep -q -- --since; then
> > + DMESG_HAS_SINCE=yes
> > + else
> > + DMESG_HAS_SINCE=no
...as this case is broken anyway. :(
Will resend with less cruft
--D
> > + fi
> > +}
> > +
> > _mount()
> > {
> > - $MOUNT_PROG $*
> > + $MOUNT_PROG $*
> > + ret=$?
> > + if [ "$ret" -ne 0 ]; then
> > + echo "\"$MOUNT_PROG $*\" failed at $(date)" >> "$seqres.mountfail?"
> > + if _dmesg_detect_since; then
> > + dmesg --since '30s ago' >> "$seqres.mountfail?"
> > + else
> > + dmesg | tail -n 100 >> "$seqres.mountfail?"
> > + fi
> > + fi
> > +
> > + return $ret
> > }
> >
> > # Call _mount to do mount operation but also save mountpoint to
> > diff --git a/common/report b/common/report
> > index 7128bbebac8b75..a41a58f790b784 100644
> > --- a/common/report
> > +++ b/common/report
> > @@ -199,6 +199,7 @@ _xunit_make_testcase_report()
> > local out_src="${SRC_DIR}/${test_name}.out"
> > local full_file="${REPORT_DIR}/${test_name}.full"
> > local dmesg_file="${REPORT_DIR}/${test_name}.dmesg"
> > + local mountfail_file="${REPORT_DIR}/${test_name}.mountfail"
> > local outbad_file="${REPORT_DIR}/${test_name}.out.bad"
> > if [ -z "$_err_msg" ]; then
> > _err_msg="Test $test_name failed, reason unknown"
> > @@ -225,6 +226,13 @@ _xunit_make_testcase_report()
> > printf ']]>\n' >>$report
> > echo -e "\t\t</system-err>" >> $report
> > fi
> > + if [ -z "$quiet" -a -f "$mountfail_file" ]; then
> > + echo -e "\t\t<mount-failure>" >> $report
> > + printf '<![CDATA[\n' >>$report
> > + cat "$mountfail_file" | tr -dc '[:print:][:space:]' | encode_cdata >>$report
> > + printf ']]>\n' >>$report
> > + echo -e "\t\t</mount-failure>" >> $report
> > + fi
> > ;;
> > *)
> > echo -e "\t\t<failure message=\"Unknown test_status=$test_status\" type=\"TestFail\"/>" >> $report
> > diff --git a/doc/xunit.xsd b/doc/xunit.xsd
> > index d287eaf5a25fb6..efe0badbb338b5 100644
> > --- a/doc/xunit.xsd
> > +++ b/doc/xunit.xsd
> > @@ -131,7 +131,7 @@
> > </xs:complexType>
> > </xs:element>
> > </xs:choice>
> > - <xs:choice minOccurs="0" maxOccurs="3">
> > + <xs:choice minOccurs="0" maxOccurs="4">
> > <xs:element name="system-out" minOccurs="0" maxOccurs="1">
> > <xs:annotation>
> > <xs:documentation xml:lang="en">Data that was written to the .full log file while the test was executed.</xs:documentation>
> > @@ -162,6 +162,16 @@
> > </xs:restriction>
> > </xs:simpleType>
> > </xs:element>
> > + <xs:element name="mount-failure" minOccurs="0" maxOccurs="1">
> > + <xs:annotation>
> > + <xs:documentation xml:lang="en">Kernel log recorded when mount failed.</xs:documentation>
> > + </xs:annotation>
> > + <xs:simpleType>
> > + <xs:restriction base="pre-string">
> > + <xs:whiteSpace value="preserve"/>
> > + </xs:restriction>
> > + </xs:simpleType>
> > + </xs:element>
> > </xs:choice>
> > </xs:sequence>
> > <xs:attribute name="name" type="xs:token" use="required">
> > diff --git a/tests/selftest/008 b/tests/selftest/008
> > new file mode 100755
> > index 00000000000000..bcd1f13ed27778
> > --- /dev/null
> > +++ b/tests/selftest/008
> > @@ -0,0 +1,20 @@
> > +#! /bin/bash
> > +# SPDX-License-Identifier: GPL-2.0
> > +# Copyright (c) 2024-2026 Oracle. All Rights Reserved.
> > +#
> > +# FS QA Test 008
> > +#
> > +# Test mount failure capture.
> > +#
> > +. ./common/preamble
> > +_begin_fstest selftest
> > +
> > +_require_command "$WIPEFS_PROG" wipefs
> > +_require_scratch
> > +
> > +$WIPEFS_PROG -a $SCRATCH_DEV
> > +_scratch_mount &>> $seqres.full
> > +
>
> echo "Silence is golden"
>
> > +# success, all done
> > +status=0
> > +exit
> > diff --git a/tests/selftest/008.out b/tests/selftest/008.out
> > new file mode 100644
> > index 00000000000000..aaff95f3f48372
> > --- /dev/null
> > +++ b/tests/selftest/008.out
> > @@ -0,0 +1 @@
> > +QA output created by 008
>
> Silence is golden
>
> >
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v1.1 2/2] check: capture dmesg of mount failures if test fails
2026-04-13 17:51 ` [PATCH 2/2] check: capture dmesg of mount failures if test fails Darrick J. Wong
2026-04-14 7:59 ` Christoph Hellwig
2026-04-16 17:56 ` Zorro Lang
@ 2026-04-16 19:15 ` Darrick J. Wong
2 siblings, 0 replies; 13+ messages in thread
From: Darrick J. Wong @ 2026-04-16 19:15 UTC (permalink / raw)
To: zlang; +Cc: linux-xfs, fstests, Christoph Hellwig
From: Darrick J. Wong <djwong@kernel.org>
Capture the kernel output after a mount failure occurs. If the test
itself fails, then keep the logging output for further diagnosis. The
xunit.xsd update adds a <mount-failure> element to the xml output, whose
output is the mountfail file.
Note that because the .mountfail file is preserved by ./check, the new
selftest requires the user to check for the .mountfail file. This is a
little awkward.
Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
---
v1.1: remove extraneous cruft, simplify dmesg detection
---
check | 20 +++++++++++++++++++-
common/rc | 19 ++++++++++++++++++-
common/report | 8 ++++++++
doc/xunit.xsd | 12 +++++++++++-
tests/selftest/008 | 22 ++++++++++++++++++++++
tests/selftest/008.out | 1 +
6 files changed, 79 insertions(+), 3 deletions(-)
create mode 100755 tests/selftest/008
create mode 100644 tests/selftest/008.out
diff --git a/check b/check
index 6ae89feba7c30a..1455efeb3d8601 100755
--- a/check
+++ b/check
@@ -608,7 +608,7 @@ _stash_fail_loop_files() {
local seq_prefix="${REPORT_DIR}/${1}"
local cp_suffix="$2"
- for i in ".full" ".dmesg" ".out.bad" ".notrun" ".core" ".hints"; do
+ for i in ".full" ".dmesg" ".out.bad" ".notrun" ".core" ".hints" ".mountfail"; do
rm -f "${seq_prefix}${i}${cp_suffix}"
if [ -f "${seq_prefix}${i}" ]; then
cp "${seq_prefix}${i}" "${seq_prefix}${i}${cp_suffix}"
@@ -982,6 +982,7 @@ function run_section()
echo -n " $seqnum -- "
cat $seqres.notrun
tc_status="notrun"
+ rm -f "$seqres.mountfail?"
_stash_test_status "$seqnum" "$tc_status"
# Unmount the scratch fs so that we can wipe the scratch
@@ -1051,6 +1052,7 @@ function run_section()
if [ ! -f $seq.out ]; then
_dump_err "no qualified output"
tc_status="fail"
+ rm -f "$seqres.mountfail?"
_stash_test_status "$seqnum" "$tc_status"
continue;
fi
@@ -1089,6 +1091,22 @@ function run_section()
rm -f $seqres.hints
fi
fi
+
+ if [ -f "$seqres.mountfail?" ]; then
+ if [ "$tc_status" = "fail" ]; then
+ # Let the user know if there were mount
+ # failures on a test that failed because that
+ # could be interesting.
+ mv "$seqres.mountfail?" "$seqres.mountfail"
+ _dump_err "check: possible mount failures (see $seqres.mountfail)"
+ else
+ # Don't retain mount failure logs for tests
+ # that pass or were skipped because some tests
+ # intentionally drive mount failures.
+ rm -f "$seqres.mountfail?"
+ fi
+ fi
+
_stash_test_status "$seqnum" "$tc_status"
done
diff --git a/common/rc b/common/rc
index b11a7d1e404519..b59f4681b4f32b 100644
--- a/common/rc
+++ b/common/rc
@@ -288,9 +288,26 @@ _get_hugepagesize()
awk '/Hugepagesize/ {print $2 * 1024}' /proc/meminfo
}
+# Does dmesg have a --since flag?
+_has_dmesg_since_option()
+{
+ grep -q -- --since <(dmesg --help)
+}
+
_mount()
{
- $MOUNT_PROG $*
+ $MOUNT_PROG $*
+ ret=$?
+ if [ "$ret" -ne 0 ]; then
+ echo "\"$MOUNT_PROG $*\" failed at $(date)" >> "$seqres.mountfail?"
+ if _has_dmesg_since_option; then
+ dmesg --since '30s ago' >> "$seqres.mountfail?"
+ else
+ dmesg | tail -n 100 >> "$seqres.mountfail?"
+ fi
+ fi
+
+ return $ret
}
# Call _mount to do mount operation but also save mountpoint to
diff --git a/common/report b/common/report
index 7128bbebac8b75..a41a58f790b784 100644
--- a/common/report
+++ b/common/report
@@ -199,6 +199,7 @@ _xunit_make_testcase_report()
local out_src="${SRC_DIR}/${test_name}.out"
local full_file="${REPORT_DIR}/${test_name}.full"
local dmesg_file="${REPORT_DIR}/${test_name}.dmesg"
+ local mountfail_file="${REPORT_DIR}/${test_name}.mountfail"
local outbad_file="${REPORT_DIR}/${test_name}.out.bad"
if [ -z "$_err_msg" ]; then
_err_msg="Test $test_name failed, reason unknown"
@@ -225,6 +226,13 @@ _xunit_make_testcase_report()
printf ']]>\n' >>$report
echo -e "\t\t</system-err>" >> $report
fi
+ if [ -z "$quiet" -a -f "$mountfail_file" ]; then
+ echo -e "\t\t<mount-failure>" >> $report
+ printf '<![CDATA[\n' >>$report
+ cat "$mountfail_file" | tr -dc '[:print:][:space:]' | encode_cdata >>$report
+ printf ']]>\n' >>$report
+ echo -e "\t\t</mount-failure>" >> $report
+ fi
;;
*)
echo -e "\t\t<failure message=\"Unknown test_status=$test_status\" type=\"TestFail\"/>" >> $report
diff --git a/doc/xunit.xsd b/doc/xunit.xsd
index d287eaf5a25fb6..efe0badbb338b5 100644
--- a/doc/xunit.xsd
+++ b/doc/xunit.xsd
@@ -131,7 +131,7 @@
</xs:complexType>
</xs:element>
</xs:choice>
- <xs:choice minOccurs="0" maxOccurs="3">
+ <xs:choice minOccurs="0" maxOccurs="4">
<xs:element name="system-out" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">Data that was written to the .full log file while the test was executed.</xs:documentation>
@@ -162,6 +162,16 @@
</xs:restriction>
</xs:simpleType>
</xs:element>
+ <xs:element name="mount-failure" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Kernel log recorded when mount failed.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="pre-string">
+ <xs:whiteSpace value="preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
</xs:choice>
</xs:sequence>
<xs:attribute name="name" type="xs:token" use="required">
diff --git a/tests/selftest/008 b/tests/selftest/008
new file mode 100755
index 00000000000000..e6cc87fec99680
--- /dev/null
+++ b/tests/selftest/008
@@ -0,0 +1,22 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2024-2026 Oracle. All Rights Reserved.
+#
+# FS QA Test 008
+#
+# Test mount failure capture. Test runners will have to look for the
+# 008.mountfail file in the results directory since ./check handles the
+# preservation.
+#
+. ./common/preamble
+_begin_fstest selftest
+
+_require_command "$WIPEFS_PROG" wipefs
+_require_scratch
+
+$WIPEFS_PROG -a $SCRATCH_DEV
+_scratch_mount &>> $seqres.full
+
+# success, all done
+status=0
+exit
diff --git a/tests/selftest/008.out b/tests/selftest/008.out
new file mode 100644
index 00000000000000..aaff95f3f48372
--- /dev/null
+++ b/tests/selftest/008.out
@@ -0,0 +1 @@
+QA output created by 008
^ permalink raw reply related [flat|nested] 13+ messages in thread
end of thread, other threads:[~2026-04-16 19:15 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-13 17:50 [PATCHSET 2/2] fstests: capture logs from mount failures Darrick J. Wong
2026-04-13 17:51 ` [PATCH 1/2] treewide: convert all $MOUNT_PROG to _mount Darrick J. Wong
2026-04-14 7:58 ` Christoph Hellwig
2026-04-16 17:34 ` Zorro Lang
2026-04-16 17:56 ` Darrick J. Wong
2026-04-13 17:51 ` [PATCH 2/2] check: capture dmesg of mount failures if test fails Darrick J. Wong
2026-04-14 7:59 ` Christoph Hellwig
2026-04-14 17:17 ` Darrick J. Wong
2026-04-15 5:34 ` Christoph Hellwig
2026-04-16 17:56 ` Zorro Lang
2026-04-16 18:57 ` Darrick J. Wong
2026-04-16 19:15 ` [PATCH v1.1 " Darrick J. Wong
-- strict thread matches above, loose matches on Subject: below --
2024-12-31 23:35 [PATCHSET 3/5] fstests: capture logs from mount failures Darrick J. Wong
2024-12-31 23:56 ` [PATCH 1/2] treewide: convert all $MOUNT_PROG to _mount Darrick J. Wong
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox