btrfs: add fstrim test case on the sprout device

Add fstrim test case on the sprout device, verify seed device
integrity. Targeting kernel commit 5e753a817b2d ("btrfs: fix
unmountable seed device after fstrim")

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
This commit is contained in:
Anand Jain
2021-05-03 19:08:00 +08:00
committed by Eryu Guan
parent 18d4e9c7bf
commit fcd74c405b
3 changed files with 85 additions and 0 deletions
+79
View File
@@ -0,0 +1,79 @@
#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2021 Oracle. All Rights Reserved.
#
# FS QA Test 238
#
# Check seed device integrity after fstrim on the sprout device.
#
# Kernel bug is fixed by the commit:
# btrfs: fix unmountable seed device after fstrim
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.*
}
# get standard environment, filters and checks
. ./common/rc
. ./common/filter
# remove previous $seqres.full before test
rm -f $seqres.full
# real QA test starts here
# Modify as appropriate.
_supported_fs btrfs
_require_command "$BTRFS_TUNE_PROG" btrfstune
_require_fstrim
_require_scratch_dev_pool 2
_scratch_dev_pool_get 2
seed=$(echo $SCRATCH_DEV_POOL | $AWK_PROG '{print $1}')
sprout=$(echo $SCRATCH_DEV_POOL | $AWK_PROG '{print $2}')
_mkfs_dev $seed
_mount $seed $SCRATCH_MNT
$XFS_IO_PROG -f -c "pwrite -S 0xab 0 1M" $SCRATCH_MNT/foo > /dev/null
_scratch_unmount
$BTRFS_TUNE_PROG -S 1 $seed
# Mount the seed device and add the rw device
_mount $seed $SCRATCH_MNT 2>&1 | _filter_ro_mount | _filter_scratch
md5sum $SCRATCH_MNT/foo | _filter_scratch
$BTRFS_UTIL_PROG device add -f $sprout $SCRATCH_MNT
_scratch_unmount
# Now remount writeable sprout device, create some data and run fstrim
_mount $sprout $SCRATCH_MNT
_require_batched_discard $SCRATCH_MNT
$FSTRIM_PROG $SCRATCH_MNT
_scratch_unmount
# Verify seed device is all ok
_mount $seed $SCRATCH_MNT 2>&1 | _filter_ro_mount | _filter_scratch
md5sum $SCRATCH_MNT/foo | _filter_scratch
_scratch_unmount
_check_btrfs_filesystem $seed
_scratch_dev_pool_put
# success, all done
status=0
exit
+5
View File
@@ -0,0 +1,5 @@
QA output created by 238
mount: device write-protected, mounting read-only
096003817ad2638000a6836e55866697 SCRATCH_MNT/foo
mount: device write-protected, mounting read-only
096003817ad2638000a6836e55866697 SCRATCH_MNT/foo
+1
View File
@@ -240,3 +240,4 @@
235 auto quick send 235 auto quick send
236 auto quick log 236 auto quick log
237 auto quick zone balance 237 auto quick zone balance
238 auto quick seed trim