| #! /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 -y -L 1024m -n $lvname $vgname >>$seqres.full 2>&1 |
| _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 |