Whamcloud - gitweb
tests: check updating the orphan file checksums during an offline resize
authorTheodore Ts'o <tytso@mit.edu>
Sun, 8 Dec 2024 04:56:47 +0000 (23:56 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 8 Dec 2024 04:56:47 +0000 (23:56 -0500)
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 <tytso@mit.edu>
tests/r_orphan_file/expect [new file with mode: 0644]
tests/r_orphan_file/name [new file with mode: 0644]
tests/r_orphan_file/script [new file with mode: 0644]

diff --git a/tests/r_orphan_file/expect b/tests/r_orphan_file/expect
new file mode 100644 (file)
index 0000000..4191264
--- /dev/null
@@ -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 (file)
index 0000000..e5d5834
--- /dev/null
@@ -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 (file)
index 0000000..2c292d8
--- /dev/null
@@ -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