ext4: regression test for online resizing maximum blocks

This adds a regression test for online resizing maximum blocks
which can trigger a BUG_ON with non-zero s_first_data_block
filesystem.

The bug was fixed by patch:
f96c3ac8dfc2 ("ext4: fix crash during online resizing")

The bug was introduced by patch:
1c6bd7173d66 ("ext4: convert file system to meta_bg if needed during
resizing")

Signed-off-by: Yang Xu <xuyang2018.jy@cn.fujitsu.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
This commit is contained in:
Yang Xu
2019-05-31 10:12:27 +08:00
committed by Eryu Guan
parent 81d4ff4e23
commit 51d4496438
3 changed files with 58 additions and 0 deletions
Executable
+54
View File
@@ -0,0 +1,54 @@
#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2019 FUJITSU LIMITED. All rights reserved.
#
# FSQA Test No. 035
#
# Regression test for commit:
# f96c3ac8dfc2 ("ext4: fix crash during online resizing")
#
# This case tests a loss s_first_data_block on ext4 when computing
# maximum size with given number of group descriptor blocks. Filesystem
# with non-zero s_first_data_block can happen that computed maximum size
# lower than current size and leads to a BUG_ON in in ext4_alloc_group_tables()
# hitting on flex_gd->count == 0.
#
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
# real QA test starts here
_supported_fs ext4
_supported_os Linux
_require_scratch
_require_command "$RESIZE2FS_PROG" resize2fs
rm -f $seqres.full
$MKFS_EXT4_PROG -F -b 1024 -E "resize=262144" $SCRATCH_DEV 32768 >> $seqres.full 2>&1
_scratch_mount
echo "Resizing to 262145 blocks"
$RESIZE2FS_PROG $SCRATCH_DEV 262145 >> $seqres.full 2>&1
echo "Resizing to 300000 blocks"
$RESIZE2FS_PROG $SCRATCH_DEV 300000 >> $seqres.full 2>&1
# success, all done
status=0
exit
+3
View File
@@ -0,0 +1,3 @@
QA output created by 035
Resizing to 262145 blocks
Resizing to 300000 blocks
+1
View File
@@ -37,6 +37,7 @@
032 auto quick ioctl resize
033 auto ioctl resize
034 auto quick quota
035 auto quick resize
271 auto rw quick
301 aio auto ioctl rw stress defrag
302 aio auto ioctl rw stress defrag