diff options
author | Theodore Ts'o <tytso@mit.edu> | 2017-10-14 11:18:44 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2017-10-14 11:22:17 -0400 |
commit | 2b50c18a8a12781c26b71873f4368fe61711d9f9 (patch) | |
tree | 9ad22099e95fbddd1c44658afe1cb68ed59b1865 | |
parent | ca74ecf32569373282d74047eb863aa61c147f28 (diff) | |
download | e2fsprogs-2b50c18a8a12781c26b71873f4368fe61711d9f9.tar.gz |
tests: add new test r_move_itable_realloc
This is a regression test for 0c12896e08d9: "libext2fs: prevent
allocating inode table from already used blocks"
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
-rw-r--r-- | tests/r_move_itable_realloc/expect | 58 | ||||
-rw-r--r-- | tests/r_move_itable_realloc/name | 1 | ||||
-rw-r--r-- | tests/r_move_itable_realloc/script | 69 |
3 files changed, 128 insertions, 0 deletions
diff --git a/tests/r_move_itable_realloc/expect b/tests/r_move_itable_realloc/expect new file mode 100644 index 000000000..73b2fef06 --- /dev/null +++ b/tests/r_move_itable_realloc/expect @@ -0,0 +1,58 @@ +mke2fs -q -F -o Linux -b 1024 -i 1024 -O ^resize_inode -t ext4 test.img 1024000 +resize2fs -p test.img 10240000 +Resizing the filesystem on test.img to 100000000 (1k) blocks. +Begin pass 2 (max = 2061) +Relocating blocks ----------------------------------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +Begin pass 3 (max = 125) +Scanning inode table ----------------------------------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +Begin pass 5 (max = 5) +Moving inode table ----------------------------------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +The filesystem on test.img is now 99999745 (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: 11/99999744 files (0.0% non-contiguous), 25048025/99999745 blocks +Exit status is 0 +dumpe2fs -h test.img +Filesystem volume name: <none> +Last mounted on: <not available> +Filesystem magic number: 0xEF53 +Filesystem revision #: 1 (dynamic) +Filesystem features: has_journal ext_attr dir_index filetype extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize +Default mount options: (none) +Filesystem state: clean +Errors behavior: Continue +Filesystem OS type: Linux +Inode count: 99999744 +Block count: 99999745 +Reserved block count: 4999987 +Free blocks: 74951720 +Free inodes: 99999733 +First block: 1 +Block size: 1024 +Fragment size: 1024 +Blocks per group: 8192 +Fragments per group: 8192 +Inodes per group: 8192 +Inode blocks per group: 2048 +Flex block group size: 16 +Mount count: 0 +Check interval: 15552000 (6 months) +Reserved blocks uid: 0 +Reserved blocks gid: 0 +First inode: 11 +Inode size: 256 +Required extra isize: 32 +Desired extra isize: 32 +Journal inode: 8 +Default directory hash: half_md4 +Journal backup: inode blocks +Journal features: (none) +Journal size: 16M +Journal length: 16384 +Journal sequence: 0x00000001 +Journal start: 0 + diff --git a/tests/r_move_itable_realloc/name b/tests/r_move_itable_realloc/name new file mode 100644 index 000000000..c265317a8 --- /dev/null +++ b/tests/r_move_itable_realloc/name @@ -0,0 +1 @@ +don't allocate inode table from in-use blocks diff --git a/tests/r_move_itable_realloc/script b/tests/r_move_itable_realloc/script new file mode 100644 index 000000000..c42ec0453 --- /dev/null +++ b/tests/r_move_itable_realloc/script @@ -0,0 +1,69 @@ +if [ $(uname -s) = "FreeBSD" ]; then + # creates a 96GB filesystem + echo "$test_name: $DESCRIPTION: skipped for FreeBSD (no sparse files)" + return 0 +fi + +if [ $(uname -s) = "Darwin" ]; then + # creates a 96GB filesystem + echo "$test_name: $DESCRIPTION: skipped for HFS+ (no sparse files)" + return 0 +fi + +if test -x $RESIZE2FS_EXE -a -x $DEBUGFS_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 + +cp /dev/null $OUT + +dd if=/dev/zero of=$TMPFILE bs=1k count=512 > /dev/null 2>&1 + +echo mke2fs -q -F -o Linux -b 1024 -i 1024 -O ^resize_inode -t ext4 test.img 1024000 > $OUT +$MKE2FS -q -F -o Linux -b 1024 -i 1024 -O ^resize_inode -t ext4 \ + $TMPFILE 1024000 2>&1 | + sed -f $cmd_dir/filter.sed -e "s;$TMPFILE;test.img;" >> $OUT + +echo resize2fs -p test.img 10240000 >> $OUT +$RESIZE2FS -p $TMPFILE 100000000 2>&1 | + sed -f $cmd_dir/filter.sed -e "s;$TMPFILE;test.img;" >> $OUT + +$FSCK $FSCK_OPT -N test_filesys $TMPFILE > $OUT.new 2>&1 +status=$? +echo Exit status is $status >> $OUT.new +sed -f $cmd_dir/filter.sed -e "s;$TMPFILE;test.img;" $OUT.new >> $OUT +rm -f $OUT.new + +$DEBUGFS -R "set_super_value lastcheck 0" -w $TMPFILE >/dev/null 2>&1 +$DEBUGFS -R "set_super_value hash_seed null" -w $TMPFILE >/dev/null 2>&1 +$DEBUGFS -R "set_super_value mkfs_time 0" -w $TMPFILE >/dev/null 2>&1 +$TUNE2FS -c 20 -U clear $TMPFILE >/dev/null 2>&1 + +echo dumpe2fs -h test.img >> $OUT +$DUMPE2FS -h $TMPFILE 2>&1 | sed -f $cmd_dir/filter.sed -e '/Block bitmap.*$/N;s/\n Inode bitmap/, Inode bitmap/g' >> $OUT + +rm -f $TMPFILE + +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_EXE -a -x $DEBUGFS_EXE; then + echo "$test_name: $test_description: skipped" +fi |