@@ -2584,9 +2584,11 @@ _require_odirect()
rm -f $testfile 2>&1 > /dev/null
}
+# Format a swapfile and return its size in bytes
_format_swapfile() {
local fname="$1"
local sz="$2"
+ local swap_log=""
rm -f "$fname"
touch "$fname"
@@ -2595,8 +2597,10 @@ _format_swapfile() {
$CHATTR_PROG +C "$fname" > /dev/null 2>&1
_pwrite_byte 0x61 0 "$sz" "$fname" >> $seqres.full
# Ignore permission complaints on filesystems that don't support perms
- $MKSWAP_PROG "$fname" 2>&1 >> $seqres.full | \
- grep -v "insecure permission"
+ swap_log=$($MKSWAP_PROG "$fname" 2>&1 | grep -v "insecure permission")
+ echo $swap_log >> $seqres.full
+
+ echo $swap_log | grep -oP '\w+(?= bytes)'
}
_swapon_file() {
@@ -2628,7 +2632,7 @@ _require_scratch_swapfile()
_scratch_mount
# Minimum size for mkswap is 10 pages
- _format_swapfile "$SCRATCH_MNT/swap" $(($(get_page_size) * 10))
+ _format_swapfile "$SCRATCH_MNT/swap" $(($(get_page_size) * 10)) > /dev/null
# ext* has supported all variants of swap files since their
# introduction, so swapon should not fail.
@@ -31,7 +31,7 @@ swapoff "$SCRATCH_MNT/swap" >/dev/null 2>&1
echo "Compressed file"
rm -f "$SCRATCH_MNT/swap"
-_format_swapfile "$SCRATCH_MNT/swap" $(($(get_page_size) * 10))
+_format_swapfile "$SCRATCH_MNT/swap" $(($(get_page_size) * 10)) > /dev/null
$CHATTR_PROG +c "$SCRATCH_MNT/swap" 2>&1 | grep -o "Invalid argument while setting flags"
status=0
@@ -20,7 +20,7 @@ _scratch_mount
$BTRFS_UTIL_PROG subvolume create "$SCRATCH_MNT/swapvol" >> $seqres.full
swapfile="$SCRATCH_MNT/swapvol/swap"
-_format_swapfile "$swapfile" $(($(get_page_size) * 10))
+_format_swapfile "$swapfile" $(($(get_page_size) * 10)) > /dev/null
swapon "$swapfile"
# Turning off nocow doesn't do anything because the file is not empty, not
@@ -18,7 +18,7 @@ _check_minimal_fs_size $((1024 * 1024 * 1024))
cycle_swapfile() {
local sz=${1:-$(($(get_page_size) * 10))}
- _format_swapfile "$SCRATCH_MNT/swap" "$sz"
+ _format_swapfile "$SCRATCH_MNT/swap" "$sz" > /dev/null
swapon "$SCRATCH_MNT/swap" 2>&1 | _filter_scratch
swapoff "$SCRATCH_MNT/swap" > /dev/null 2>&1
}
@@ -47,7 +47,7 @@ _scratch_mkfs >> $seqres.full 2>&1
_scratch_mount
# Create the swap file, then add the device. That way we know it's all on one
# device.
-_format_swapfile "$SCRATCH_MNT/swap" $(($(get_page_size) * 10))
+_format_swapfile "$SCRATCH_MNT/swap" $(($(get_page_size) * 10)) > /dev/null
scratch_dev2="$(echo "${SCRATCH_DEV_POOL}" | awk '{ print $2 }')"
$BTRFS_UTIL_PROG device add -f "$scratch_dev2" "$SCRATCH_MNT"
swapon "$SCRATCH_MNT/swap" 2>&1 | _filter_scratch
@@ -29,7 +29,7 @@ scratch_dev3="$(echo "${SCRATCH_DEV_POOL}" | awk '{ print $3 }')"
echo "Remove device"
_scratch_mkfs >> $seqres.full 2>&1
_scratch_mount
-_format_swapfile "$SCRATCH_MNT/swap" $(($(get_page_size) * 10))
+_format_swapfile "$SCRATCH_MNT/swap" $(($(get_page_size) * 10)) > /dev/null
$BTRFS_UTIL_PROG device add -f "$scratch_dev2" "$SCRATCH_MNT"
swapon "$SCRATCH_MNT/swap" 2>&1 | _filter_scratch
# We know the swap file is on device 1 because we added device 2 after it was
@@ -63,7 +63,7 @@ dd if=/dev/zero of="$SCRATCH_MNT/refill" bs=4096 >> $seqres.full 2>&1
# of the filesystem was used, so the swap file must be in the new part of the
# filesystem.
$BTRFS_UTIL_PROG filesystem resize $((3 * fssize)) "$SCRATCH_MNT" | convert_resize_output
-_format_swapfile "$swapfile" $((32 * 1024 * 1024))
+_format_swapfile "$swapfile" $((32 * 1024 * 1024)) > /dev/null
swapon "$swapfile"
# Free up the first 1GB of the filesystem.
@@ -39,7 +39,7 @@ blocks=160
blksz=65536
echo "Initialize file"
-_format_swapfile "$testdir/file1" $((blocks * blksz))
+_format_swapfile "$testdir/file1" $((blocks * blksz)) > /dev/null
swapon $testdir/file1
touch "$testdir/file2"
@@ -39,7 +39,7 @@ blocks=160
blksz=65536
echo "Initialize file"
-_format_swapfile "$testdir/file1" $((blocks * blksz))
+_format_swapfile "$testdir/file1" $((blocks * blksz)) > /dev/null
touch "$testdir/file2"
$CHATTR_PROG +C "$testdir/file2" >/dev/null 2>&1
_cp_reflink $testdir/file1 $testdir/file2 2>&1 | _filter_scratch
@@ -27,7 +27,7 @@ blocks=160
blksz=65536
echo "Initialize file"
-_format_swapfile "$testdir/file1" $((blocks * blksz))
+_format_swapfile "$testdir/file1" $((blocks * blksz)) > /dev/null
swapon "$testdir/file1"
touch "$testdir/file2"
@@ -26,7 +26,7 @@ blocks=160
blksz=65536
echo "Initialize file"
-_format_swapfile "$testdir/file1" $((blocks * blksz))
+_format_swapfile "$testdir/file1" $((blocks * blksz)) > /dev/null
swapon "$testdir/file1"
echo "Try to truncate"
@@ -30,7 +30,7 @@ _scratch_mount
$XFS_IO_PROG -f -c "pwrite -S 0x61 0 128k" $SCRATCH_MNT/file >> $seqres.full 2>&1
echo swap files return ETXTBUSY
-_format_swapfile $SCRATCH_MNT/swapfile 16m
+_format_swapfile $SCRATCH_MNT/swapfile 16m > /dev/null
_swapon_file $SCRATCH_MNT/swapfile
$XFS_IO_PROG -f -c "copy_range -l 32k $SCRATCH_MNT/file" $SCRATCH_MNT/swapfile
@@ -31,7 +31,7 @@ _scratch_mount >> $seqres.full 2>&1
testfile=$SCRATCH_MNT/$seq.swap
-_format_swapfile $testfile 20m
+_format_swapfile $testfile 20m > /dev/null
# Can you modify the swapfile via previously open file descriptors?
for verb in 1 2 3 4; do
Once the kernel is free to not map the full swap file during a swapon call, it can be useful to know the exact size of the swap area created during _format_swapfile(). To achieve this, it is needed to change other _format_swapfile() callers to drop the return value if not required, otherwise, it will be printed to stdout making such tests to fail. Signed-off-by: Carlos Maiolino <cmaiolino@redhat.com> --- V2: - return swap size in bytes - add a function description to _format_swapfile - update other _format_swapfile() callers to discard its return value - rephrase patch's description common/rc | 10 +++++++--- tests/btrfs/173 | 2 +- tests/btrfs/174 | 2 +- tests/btrfs/175 | 4 ++-- tests/btrfs/176 | 2 +- tests/btrfs/177 | 2 +- tests/generic/356 | 2 +- tests/generic/357 | 2 +- tests/generic/493 | 2 +- tests/generic/494 | 2 +- tests/generic/554 | 2 +- tests/generic/569 | 2 +- 12 files changed, 19 insertions(+), 15 deletions(-)