Skip to content

Commit

Permalink
generic/{472,496}: fix swap file creation on Btrfs
Browse files Browse the repository at this point in the history
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: 25ce974 ("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>
  • Loading branch information
osandov authored and guaneryu committed Nov 4, 2018
1 parent 290e7a5 commit 70c4067
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 11 deletions.
14 changes: 6 additions & 8 deletions tests/generic/472
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
6 changes: 3 additions & 3 deletions tests/generic/496
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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"
Expand Down

0 comments on commit 70c4067

Please sign in to comment.