Message ID | e6656ec218c973d548803ed50a45c8d3f81fe388.1541193856.git.osandov@fb.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | fstests: test Btrfs swapfile support | expand |
On Fri, Nov 02, 2018 at 02:29:42PM -0700, Omar Sandoval wrote: > From: Omar Sandoval <osandov@fb.com> > > Make sure we don't shrink the device past an active swap file, but allow > shrinking otherwise, as well as growing and balance. > > Signed-off-by: Omar Sandoval <osandov@fb.com> > --- > tests/btrfs/177 | 64 +++++++++++++++++++++++++++++++++++++++++++++ > tests/btrfs/177.out | 6 +++++ > tests/btrfs/group | 1 + > 3 files changed, 71 insertions(+) > create mode 100755 tests/btrfs/177 > create mode 100644 tests/btrfs/177.out > > diff --git a/tests/btrfs/177 b/tests/btrfs/177 > new file mode 100755 > index 00000000..12dad8fc > --- /dev/null > +++ b/tests/btrfs/177 > @@ -0,0 +1,64 @@ > +#! /bin/bash > +# SPDX-License-Identifier: GPL-2.0 > +# Copyright (c) 2018 Facebook. All Rights Reserved. > +# > +# FS QA Test 177 > +# > +# Test relocation (balance and resize) with an active swap file. > +# > +seq=`basename $0` > +seqres=$RESULT_DIR/$seq > +echo "QA output created by $seq" > + > +here=`pwd` > +tmp=/tmp/$$ > +status=1 # failure is the default! > +trap "_cleanup; exit \$status" 0 1 2 3 15 > + > +_cleanup() > +{ > + cd / > + rm -f $tmp.* > +} > + > +. ./common/rc > +. ./common/filter > +. ./common/btrfs > + > +rm -f $seqres.full > + > +# Modify as appropriate. > +_supported_fs generic > +_supported_os Linux > +_require_scratch_swapfile > + > +swapfile="$SCRATCH_MNT/swap" > + > +# First, create a 1GB filesystem and fill it up. > +_scratch_mkfs_sized $((1024 * 1024 * 1024)) >> $seqres.full 2>&1 > +_scratch_mount > +dd if=/dev/zero of="$SCRATCH_MNT/fill" bs=1024k >> $seqres.full 2>&1 Can this be replaced by fallocate? Though it's just a 1GiB of data, it still takes some seconds on rotational storage.
diff --git a/tests/btrfs/177 b/tests/btrfs/177 new file mode 100755 index 00000000..12dad8fc --- /dev/null +++ b/tests/btrfs/177 @@ -0,0 +1,64 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Facebook. All Rights Reserved. +# +# FS QA Test 177 +# +# Test relocation (balance and resize) with an active swap file. +# +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -f $tmp.* +} + +. ./common/rc +. ./common/filter +. ./common/btrfs + +rm -f $seqres.full + +# Modify as appropriate. +_supported_fs generic +_supported_os Linux +_require_scratch_swapfile + +swapfile="$SCRATCH_MNT/swap" + +# First, create a 1GB filesystem and fill it up. +_scratch_mkfs_sized $((1024 * 1024 * 1024)) >> $seqres.full 2>&1 +_scratch_mount +dd if=/dev/zero of="$SCRATCH_MNT/fill" bs=1024k >> $seqres.full 2>&1 +# Now add more space and create a swap file. We know that the first 1GB of the +# filesystem was used, so the swap file must be in the new part of the +# filesystem. +$BTRFS_UTIL_PROG filesystem resize 2G "$SCRATCH_MNT" | _filter_scratch +_format_swapfile "$swapfile" $((32 * 1024 * 1024)) +swapon "$swapfile" +# Add even more space which we know is unused. +$BTRFS_UTIL_PROG filesystem resize 3G "$SCRATCH_MNT" | _filter_scratch +# Free up the first 1GB of the filesystem. +rm -f "$SCRATCH_MNT/fill" +# Get rid of empty block groups and also make sure that balance skips block +# groups containing active swap files. +_run_btrfs_balance_start "$SCRATCH_MNT" +# Shrink away the unused space. +$BTRFS_UTIL_PROG filesystem resize 2G "$SCRATCH_MNT" | _filter_scratch +# Try to shrink away the area occupied by the swap file, which should fail. +$BTRFS_UTIL_PROG filesystem resize 1G "$SCRATCH_MNT" 2>&1 | grep -o "Text file busy" +swapoff "$swapfile" +# It should work again after swapoff. +$BTRFS_UTIL_PROG filesystem resize 1G "$SCRATCH_MNT" | _filter_scratch +_scratch_unmount + +status=0 +exit diff --git a/tests/btrfs/177.out b/tests/btrfs/177.out new file mode 100644 index 00000000..6ced01da --- /dev/null +++ b/tests/btrfs/177.out @@ -0,0 +1,6 @@ +QA output created by 177 +Resize 'SCRATCH_MNT' of '2G' +Resize 'SCRATCH_MNT' of '3G' +Resize 'SCRATCH_MNT' of '2G' +Text file busy +Resize 'SCRATCH_MNT' of '1G' diff --git a/tests/btrfs/group b/tests/btrfs/group index 3562420b..0b62e58a 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -179,3 +179,4 @@ 174 auto quick swap 175 auto quick swap 176 auto quick swap +177 auto quick swap