]> git.apps.os.sepia.ceph.com Git - xfstests-dev.git/commitdiff
generic/{472,496}: fix swap file creation on Btrfs
authorOmar Sandoval <osandov@fb.com>
Fri, 2 Nov 2018 21:29:37 +0000 (14:29 -0700)
committerEryu Guan <guaneryu@gmail.com>
Sun, 4 Nov 2018 16:42:49 +0000 (00:42 +0800)
The swap file must be set nocow before it is written to, otherwise it is
ignored and Btrfs refuses to activate it as swap.

Fixes: 25ce9740065e ("generic: test swapfile creation, activation, and deactivation")
Signed-off-by: Omar Sandoval <osandov@fb.com>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
tests/generic/472
tests/generic/496

index 04ed3e73eeeef272acb057a8d509d47db85b1fe0..aba4a00719bc26365be893685c340533af42a9e9 100755 (executable)
@@ -42,13 +42,15 @@ _scratch_mount >>$seqres.full 2>&1
 
 swapfile=$SCRATCH_MNT/swap
 len=$((2 * 1048576))
-page_size=$(get_page_size)
 
 swapfile_cycle() {
        local swapfile="$1"
+       local len="$2"
 
+       touch $swapfile
        # Swap files must be nocow on Btrfs.
        $CHATTR_PROG +C $swapfile >> $seqres.full 2>&1
+       _pwrite_byte 0x58 0 $len $swapfile >> $seqres.full
        "$here/src/mkswap" $swapfile >> $seqres.full
        "$here/src/swapon" $swapfile 2>&1 | _filter_scratch
        swapoff $swapfile 2>> $seqres.full
@@ -57,20 +59,16 @@ swapfile_cycle() {
 
 # Create a regular swap file
 echo "regular swap" | tee -a $seqres.full
-_pwrite_byte 0x58 0 $len $swapfile >> $seqres.full
-swapfile_cycle $swapfile
+swapfile_cycle $swapfile $len
 
 # Create a swap file with a little too much junk on the end
 echo "too long swap" | tee -a $seqres.full
-_pwrite_byte 0x58 0 $((len + 3)) $swapfile >> $seqres.full
-swapfile_cycle $swapfile
+swapfile_cycle $swapfile $((len + 3))
 
 # Create a ridiculously small swap file.  Each swap file must have at least
 # two pages after the header page.
 echo "tiny swap" | tee -a $seqres.full
-tiny_len=$((page_size * 3))
-_pwrite_byte 0x58 0 $tiny_len $swapfile >> $seqres.full
-swapfile_cycle $swapfile
+swapfile_cycle $swapfile $(($(get_page_size) * 3))
 
 status=0
 exit
index 968b8012d5b2b0969ff735213da943346d3d891d..3083eef0bebcdd19c04d249744747461b85ce1ed 100755 (executable)
@@ -49,8 +49,6 @@ page_size=$(get_page_size)
 swapfile_cycle() {
        local swapfile="$1"
 
-       # Swap files must be nocow on Btrfs.
-       $CHATTR_PROG +C $swapfile >> $seqres.full 2>&1
        "$here/src/mkswap" $swapfile >> $seqres.full
        "$here/src/swapon" $swapfile 2>&1 | _filter_scratch
        swapoff $swapfile 2>> $seqres.full
@@ -59,8 +57,10 @@ swapfile_cycle() {
 
 # Create a fallocated swap file
 echo "fallocate swap" | tee -a $seqres.full
-$XFS_IO_PROG -f -c "falloc 0 $len" $swapfile >> $seqres.full
+touch $swapfile
+# Swap files must be nocow on Btrfs.
 $CHATTR_PROG +C $swapfile >> $seqres.full 2>&1
+$XFS_IO_PROG -f -c "falloc 0 $len" $swapfile >> $seqres.full
 "$here/src/mkswap" $swapfile
 "$here/src/swapon" $swapfile >> $seqres.full 2>&1 || \
        _notrun "fallocated swap not supported here"