generic/{472,496}: fix swap file creation on Btrfs

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: 25ce974006 ("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>
This commit is contained in:
Omar Sandoval
2018-11-02 14:29:37 -07:00
committed by Eryu Guan
parent 290e7a5636
commit 70c4067285
2 changed files with 9 additions and 11 deletions
+6 -8
View File
@@ -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
+3 -3
View File
@@ -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"