On Sat, Dec 21, 2024 at 04:23:45PM +0800, Chao Yu wrote: > This patch introduce a regression testcase to check whether > f2fs can handle discard correctly once underlying lvm device > changes to not support discard after user creates snapshot > on it. > > Related bug was fixed by commit bc8aeb04fd80 ("f2fs: fix to > drop all discards after creating snapshot on lvm device") > > Cc: Jaegeuk Kim <jaegeuk@xxxxxxxxxx> > Signed-off-by: Chao Yu <chao@xxxxxxxxxx> > --- > v3: > - rebase to last for-next branch > - update according to Zorro's comments. > tests/f2fs/008 | 57 ++++++++++++++++++++++++++++++++++++++++++++++ > tests/f2fs/008.out | 2 ++ > 2 files changed, 59 insertions(+) > create mode 100755 tests/f2fs/008 > create mode 100644 tests/f2fs/008.out > > diff --git a/tests/f2fs/008 b/tests/f2fs/008 > new file mode 100755 > index 00000000..b85e321c > --- /dev/null > +++ b/tests/f2fs/008 > @@ -0,0 +1,57 @@ > +#! /bin/bash > +# SPDX-License-Identifier: GPL-2.0 > +# Copyright (c) 2024 Oppo. All Rights Reserved. > +# > +# FS QA Test No. f2fs/008 > +# > +# This is a regression test to check whether f2fs can handle > +# discard correctly once underlying lvm device changes to not > +# support discard after user creates snapshot on it. > +# > + > +. ./common/preamble > +_begin_fstest auto quick rw > + > +_fixed_by_kernel_commit bc8aeb04fd80 \ > + "f2fs: fix to drop all discards after creating snapshot on lvm device" > + > +_require_scratch_nolvm > +_require_block_device $SCRATCH_DEV > +_require_command "$LVM_PROG" lvm > + > +lvname=lv_$seq > +vgname=vg_$seq > +testfile=$SCRATCH_MNT/testfile > + > +_cleanup() > +{ > + _unmount $SCRATCH_MNT >>$seqres.full 2>&1 > + $LVM_PROG lvremove -ff /dev/mapper/$lvname-snapshot $vgname >>$seqres.full 2>&1 > + $LVM_PROG lvremove -ff /dev/mapper/$vgname-$lvname >>$seqres.full 2>&1 > + $LVM_PROG vgremove -ff $vgname >>$seqres.full 2>&1 > + $LVM_PROG pvremove -ff $SCRATCH_DEV >>$seqres.full 2>&1 > + _udev_wait --removed /dev/mapper/$vgname-$lvname > + cd / > + rm -f $tmp.* > +} > + > +$LVM_PROG pvcreate -f $SCRATCH_DEV >>$seqres.full 2>&1 > +$LVM_PROG vgcreate -f $vgname $SCRATCH_DEV >>$seqres.full 2>&1 > +$LVM_PROG lvcreate -L 1024m -n $lvname $vgname >>$seqres.full 2>&1 The lvcreate might be blocked by: "WARNING: f2fs signature detected on /dev/vg_008/lv_008 at offset 1024. Wipe it? [y/n]:" So better to use "lvcreate -y" or "yes | ...". Thanks, Zorro > +_udev_wait /dev/mapper/$vgname-$lvname > + > +_mkfs_dev /dev/mapper/$vgname-$lvname >>$seqres.full 2>&1 > +_mount -o discard /dev/mapper/$vgname-$lvname $SCRATCH_MNT >>$seqres.full 2>&1 > + > +dd if=/dev/zero of=$testfile bs=1M count=20 >>$seqres.full 2>&1 > +sync > +rm -f $testfile > +sync > + > +# create a snapshot on lvm device > +$LVM_PROG lvcreate -L 1024m -s -n $lvname-snapshot /dev/mapper/$vgname-$lvname >>$seqres.full 2>&1 > + > +echo "Silence is golden" > + > +status=0 > +exit > diff --git a/tests/f2fs/008.out b/tests/f2fs/008.out > new file mode 100644 > index 00000000..dd68d5a4 > --- /dev/null > +++ b/tests/f2fs/008.out > @@ -0,0 +1,2 @@ > +QA output created by 008 > +Silence is golden > -- > 2.40.1 >