]> git.apps.os.sepia.ceph.com Git - xfstests-dev.git/commitdiff
common: Fix mismatched output from standard mkswap
authorXiao Yang <yangx.jy@cn.fujitsu.com>
Fri, 21 Dec 2018 09:33:28 +0000 (17:33 +0800)
committerEryu Guan <guaneryu@gmail.com>
Sat, 22 Dec 2018 12:24:02 +0000 (20:24 +0800)
With older util-linux(e.g. v2.17.2), running some tests(e.g.
generic/472, generic/495) got the following output:
-------------------------------------------------------
+mkswap: /mnt/xfstests/scratch/swap: warning: don't erase bootbits sectors
+        on whole disk. Use -f to force.
+mkswap: unable to relabel /mnt/xfstests/scratch/swap to system_u:object_r:swapfile_t:s0: Operation not supported
-------------------------------------------------------

1) Before commit c1f1b30 of util-linux, standard mkswap didn't zap bootbits
   sectors and printed a warning until force option(i.e. -f) was given.  We
   define "mkswap -f" as MKSWAP_PROG and replace all standard mkswap with
   $MKSWAP_PROG.

2) With mounting default SELinux context(e.g. system_u:object_r:root_t:s0),
   standard mkswap tried to reset the type of default context to swapfile_t
   if it is not swapfile_t, and then it failed and returned ENOTSUP expectedly
   as we don't want to create any SELinux attr on purpose.  standard mkswap
   ignored this relabel error by commit d97dc0e of util-linux, but it still
   reported the error before commit d97dc0e.  We try to skip the reset step
   in standard mkswap by mounting swapfile context directly.

Note:
We just mount swapfile context in related tests, and keep default context
in the rest of tests.

[Eryu: make mkswap a non-mandatory requirement and add comments on
"-f" option]

Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
common/config
common/rc
tests/btrfs/173
tests/xfs/419

index 0f153412bcdc09ffd245a3251fb778ed5b537258..44d8eb109906b9adab641ecaf2a7762debe262c9 100644 (file)
@@ -132,6 +132,11 @@ export DF_PROG="$(type -P df)"
 export XFS_IO_PROG="$(type -P xfs_io)"
 [ "$XFS_IO_PROG" = "" ] && _fatal "xfs_io not found"
 
+export MKSWAP_PROG="$(type -P mkswap)"
+# mkswap from util-linux v2.17.2 or older needs "-f" option to force to erase
+# bootbits sectors
+MKSWAP_PROG="$MKSWAP_PROG -f"
+
 export XFS_LOGPRINT_PROG="$(type -P xfs_logprint)"
 export XFS_REPAIR_PROG="$(type -P xfs_repair)"
 export XFS_DB_PROG="$(type -P xfs_db)"
index e5da648466ebf4237113ccd7d23dbb5e6d6203db..b8ed177618a790b8cec91297151a66f53ab3b83c 100644 (file)
--- a/common/rc
+++ b/common/rc
@@ -2210,15 +2210,28 @@ _format_swapfile() {
        # Swap files must be nocow on Btrfs.
        $CHATTR_PROG +C "$fname" > /dev/null 2>&1
        _pwrite_byte 0x61 0 "$sz" "$fname" >> $seqres.full
-       mkswap "$fname" >> $seqres.full
+       $MKSWAP_PROG "$fname" >> $seqres.full
 }
 
 # Check that the filesystem supports swapfiles
 _require_scratch_swapfile()
 {
        _require_scratch
+       _require_command "$MKSWAP_PROG" "mkswap"
 
        _scratch_mkfs >/dev/null
+
+       # With mounting SELinux context(e.g. system_u:object_r:root_t:s0),
+       # standard mkswap tried to reset the type of default context to
+       # swapfile_t if it's not swapfile_t, and then it failed and returned
+       # ENOTSUP expectedly as we don't want to create any SELinux attr on
+       # purpose.  standard mkswap ignored this relabel error by commit
+       # d97dc0e of util-linux, but it still reported the error before
+       # commit d97dc0e.  We mount swapfile context directly to skip the
+       # reset step.
+       [ -n "$SELINUX_MOUNT_OPTIONS" ] && export \
+               SELINUX_MOUNT_OPTIONS="-o context=system_u:object_r:swapfile_t:s0"
+
        _scratch_mount
 
        # Minimum size for mkswap is 10 pages
index 76d4407cabe3ad9171234444273cc5fc0c4f6ca5..515d8cfa099457a38db1d5303df1fa1702799462 100755 (executable)
@@ -41,7 +41,7 @@ rm -f "$SCRATCH_MNT/swap"
 touch "$SCRATCH_MNT/swap"
 chmod 0600 "$SCRATCH_MNT/swap"
 _pwrite_byte 0x61 0 $(($(get_page_size) * 10)) "$SCRATCH_MNT/swap" >> $seqres.full
-mkswap "$SCRATCH_MNT/swap" >> $seqres.full
+$MKSWAP_PROG "$SCRATCH_MNT/swap" >> $seqres.full
 swapon "$SCRATCH_MNT/swap" 2>&1 | _filter_scratch
 swapoff "$SCRATCH_MNT/swap" >/dev/null 2>&1
 
index 33d2d0dad2637891a979934f39e485975e8b0712..6865201dfb094429309b9bc2a98c6ff8cbb28d4a 100755 (executable)
@@ -47,7 +47,7 @@ $XFS_IO_PROG -c "open -f -R $testdir/dummy" $testdir >> $seqres.full
 echo moo >> $testdir/dummy
 $XFS_IO_PROG -c "open -f -R $testdir/file1" $testdir >> $seqres.full
 _pwrite_byte 0x61 0 $((blocks * blksz)) $testdir/file1 >> $seqres.full
-mkswap -U 27376b42-ff65-42ca-919f-6c9b62292a5c $testdir/file1 >> $seqres.full
+$MKSWAP_PROG -U 27376b42-ff65-42ca-919f-6c9b62292a5c $testdir/file1 >> $seqres.full
 
 echo "Try to swapon"
 swapon $testdir/file1 2>&1 | _filter_scratch