From 5c856fa5453558404c54d1e4bbc47cdd0bed4be3 Mon Sep 17 00:00:00 2001 From: Theodore Ts'o Date: Sat, 7 Dec 2024 23:56:47 -0500 Subject: [PATCH] tests: check updating the orphan file checksums during an offline resize Check to make sure resize2fs correctly update the orphan file's checksums if the orphan_file's blocks get moved. This test checks the fix in commit ff4f46b4fdb2 ("resize2fs: rewrite the checksums in the orphan file if necessary"). Signed-off-by: Theodore Ts'o --- tests/r_orphan_file/expect | 12 ++++++++++++ tests/r_orphan_file/name | 1 + tests/r_orphan_file/script | 43 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 tests/r_orphan_file/expect create mode 100644 tests/r_orphan_file/name create mode 100644 tests/r_orphan_file/script diff --git a/tests/r_orphan_file/expect b/tests/r_orphan_file/expect new file mode 100644 index 0000000..4191264 --- /dev/null +++ b/tests/r_orphan_file/expect @@ -0,0 +1,12 @@ +mke2fs -q -F -t ext4 -O orphan_file,metadata_csum,^64bit,^resize_inode -o Linux -m 0 test.img 32M +resize2fs test.img 1536M +Resizing the filesystem on test.img to 1572864 (1k) blocks. +The filesystem on test.img is now 1572864 (1k) blocks long. + +Pass 1: Checking inodes, blocks, and sizes +Pass 2: Checking directory structure +Pass 3: Checking directory connectivity +Pass 4: Checking reference counts +Pass 5: Checking group summary information +test_filesys: 12/393216 files (16.7% non-contiguous), 102907/1572864 blocks +Exit status is 0 diff --git a/tests/r_orphan_file/name b/tests/r_orphan_file/name new file mode 100644 index 0000000..e5d5834 --- /dev/null +++ b/tests/r_orphan_file/name @@ -0,0 +1 @@ +filesystem resize with orphan_file diff --git a/tests/r_orphan_file/script b/tests/r_orphan_file/script new file mode 100644 index 0000000..2c292d8 --- /dev/null +++ b/tests/r_orphan_file/script @@ -0,0 +1,43 @@ +if test -x $RESIZE2FS_EXE; then + +FSCK_OPT=-yf +OUT=$test_name.log +if [ -f $test_dir/expect.gz ]; then + EXP=$test_name.tmp + gunzip < $test_dir/expect.gz > $EXP1 +else + EXP=$test_dir/expect +fi + +FEATURE=orphan_file,metadata_csum,^64bit,^resize_inode + +echo mke2fs -q -F -t ext4 -O $FEATURE -o Linux -m 0 test.img 32M > $OUT.new +$MKE2FS -q -F -t ext4 -O $FEATURE -o Linux -m 0 $TMPFILE 32M >> $OUT.new 2>&1 + +echo resize2fs test.img 1536M >> $OUT.new +$RESIZE2FS $TMPFILE 1536M >> $OUT.new 2>&1 + +$FSCK $FSCK_OPT -f -N test_filesys $TMPFILE >> $OUT.new 2>&1 +status=$? +echo Exit status is $status >> $OUT.new + +sed -f $cmd_dir/filter.sed -e '/Block bitmap.*$/N;s/\n Inode bitmap/, Inode bitmap/g' < $OUT.new > $OUT +rm -f $TMPFILE $OUT.new + +cmp -s $OUT $EXP +status=$? + +if [ "$status" = 0 ] ; then + echo "$test_name: $test_description: ok" + touch $test_name.ok +else + echo "$test_name: $test_description: failed" + diff $DIFF_OPTS $EXP $OUT > $test_name.failed + rm -f $test_name.tmp +fi + +unset IMAGE FSCK_OPT OUT EXP + +else #if test -x $RESIZE2FS; then + echo "$test_name: $test_description: skipped" +fi -- 1.8.3.1