@@ -2222,6 +2222,19 @@ _require_odirect()
rm -f $testfile 2>&1 > /dev/null
}
+_format_swapfile() {
+ local fname="$1"
+ local sz="$2"
+
+ rm -f "$fname"
+ touch "$fname"
+ chmod 0600 "$fname"
+ # 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
+}
+
# Check that the filesystem supports swapfiles
_require_scratch_swapfile()
{
@@ -2231,10 +2244,8 @@ _require_scratch_swapfile()
_scratch_mount
# Minimum size for mkswap is 10 pages
- local size=$(($(get_page_size) * 10))
+ _format_swapfile "$SCRATCH_MNT/swap" $(($(get_page_size) * 10))
- _pwrite_byte 0x61 0 "$size" "$SCRATCH_MNT/swap" >/dev/null 2>&1
- mkswap "$SCRATCH_MNT/swap" >/dev/null 2>&1
if ! swapon "$SCRATCH_MNT/swap" >/dev/null 2>&1; then
_scratch_unmount
_notrun "swapfiles are not supported"
@@ -59,11 +59,12 @@ blocks=160
blksz=65536
echo "Initialize file"
-echo >> $seqres.full
-_pwrite_byte 0x61 0 $((blocks * blksz)) $testdir/file1 >> $seqres.full
-mkswap -U 27376b42-ff65-42ca-919f-6c9b62292a5c $testdir/file1 >> $seqres.full
+_format_swapfile "$testdir/file1" $((blocks * blksz))
swapon $testdir/file1
+touch "$testdir/file2"
+$CHATTR_PROG +C "$testdir/file2" >/dev/null 2>&1
+
echo "Try to reflink"
_cp_reflink $testdir/file1 $testdir/file2 2>&1 | _filter_scratch
@@ -59,9 +59,9 @@ blocks=160
blksz=65536
echo "Initialize file"
-echo >> $seqres.full
-_pwrite_byte 0x61 0 $((blocks * blksz)) $testdir/file1 >> $seqres.full
-mkswap -U 27376b42-ff65-42ca-919f-6c9b62292a5c $testdir/file1 >> $seqres.full
+_format_swapfile "$testdir/file1" $((blocks * blksz))
+touch "$testdir/file2"
+$CHATTR_PROG +C "$testdir/file2" >/dev/null 2>&1
_cp_reflink $testdir/file1 $testdir/file2 2>&1 | _filter_scratch
echo "Try to swapon"