diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 15:49:25 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 15:49:25 +0000 |
commit | 464df1d5e5ab1322e2dd0a7796939fff1aeefa9a (patch) | |
tree | 6a403684e0978f0287d7f0ec0e5aab1fd31a59e1 /tests/t_dangerous | |
parent | Initial commit. (diff) | |
download | e2fsprogs-upstream/1.47.0.tar.xz e2fsprogs-upstream/1.47.0.zip |
Adding upstream version 1.47.0.upstream/1.47.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/t_dangerous')
-rw-r--r-- | tests/t_dangerous/expect | 120 | ||||
-rw-r--r-- | tests/t_dangerous/name | 1 | ||||
-rw-r--r-- | tests/t_dangerous/script | 155 |
3 files changed, 276 insertions, 0 deletions
diff --git a/tests/t_dangerous/expect b/tests/t_dangerous/expect new file mode 100644 index 0000000..31aaf4f --- /dev/null +++ b/tests/t_dangerous/expect @@ -0,0 +1,120 @@ +tune2fs dangerous prompts test +Creating filesystem with 524288 1k blocks and 65536 inodes +Superblock backups stored on blocks: + 8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409 + +Allocating group tables: done +Writing inode tables: done +Creating journal (16384 blocks): done +Creating 445 huge file(s) with 1024 blocks each: done +Writing superblocks and filesystem accounting information: done + +tune2fs -O metadata_csum test.img + +This operation requires a freshly checked filesystem. + +Please run e2fsck -f on the filesystem. + +Exit status is 1 +tune2fs -O metadata_csum test.img +Exit status is 0 +Creating filesystem with 524288 1k blocks and 65536 inodes +Superblock backups stored on blocks: + 8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409 + +Allocating group tables: done +Writing inode tables: done +Creating journal (16384 blocks): done +Creating 445 huge file(s) with 1024 blocks each: done +Writing superblocks and filesystem accounting information: done + +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 + +Exit status is 0 +tune2fs -O metadata_csum test.img +Enabling checksums could take some time. +Proceed anyway (or wait 5 seconds to proceed) ? (y,N) +Exit status is 1 +tune2fs -I 512 test.img +Resizing inodes could take some time. +Proceed anyway (or wait 5 seconds to proceed) ? (y,N) +Exit status is 1 + +Change in FS metadata: +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 + +Exit status is 0 +tune2fs -O metadata_csum test.img +Enabling checksums could take some time. +Proceed anyway (or wait 5 seconds to proceed) ? (y,N) +This operation requires a freshly checked filesystem. + +Please run e2fsck -fD on the filesystem. + +Exit status is 0 +test_filesys was not cleanly unmounted, check forced. +Pass 1: Checking inodes, blocks, and sizes +Pass 2: Checking directory structure +Pass 3: Checking directory connectivity +Pass 3A: Optimizing directories +Pass 4: Checking reference counts +Pass 5: Checking group summary information + + + +tune2fs -I 512 test.img +Resizing inodes could take some time. +Proceed anyway (or wait 5 seconds to proceed) ? (y,N) Setting inode size 512 +Exit status is 0 +tune2fs -U f0f0f0f0-f0f0-f0f0-f0f0-f0f0f0f0f0f0 test.img +Setting the UUID on this filesystem could take some time. +Proceed anyway (or wait 5 seconds to proceed) ? (y,N) Exit status is 0 +Backing up journal inode block information. + + +Change in FS metadata: +@@ -1,3 +1,3 @@ +-Filesystem UUID: 6fc3daa4-180d-4f2b-a6f2-f7a5efb79bcf +-Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit sparse_super large_file huge_file uninit_bg dir_nlink extra_isize +-Inode size: 256 ++Filesystem UUID: f0f0f0f0-f0f0-f0f0-f0f0-f0f0f0f0f0f0 ++Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit sparse_super large_file huge_file dir_nlink extra_isize metadata_csum ++Inode size: 512 +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 + +Exit status is 0 + +Testing with metadata checksum enabled +Creating filesystem with 524288 1k blocks and 65536 inodes +Superblock backups stored on blocks: + 8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409 + +Allocating group tables: done +Writing inode tables: done +Creating journal (16384 blocks): done +Creating 445 huge file(s) with 1024 blocks each: done +Writing superblocks and filesystem accounting information: done + +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 + +Exit status is 0 +tune2fs -U random test.img +Setting the UUID on this filesystem could take some time. +Proceed anyway (or wait 5 seconds to proceed) ? (y,N) +Exit status is 1 diff --git a/tests/t_dangerous/name b/tests/t_dangerous/name new file mode 100644 index 0000000..c9a1030 --- /dev/null +++ b/tests/t_dangerous/name @@ -0,0 +1 @@ +dangerous tune2fs operation prompts diff --git a/tests/t_dangerous/script b/tests/t_dangerous/script new file mode 100644 index 0000000..a6d3dc4 --- /dev/null +++ b/tests/t_dangerous/script @@ -0,0 +1,155 @@ +FSCK_OPT=-fn +OUT=$test_name.log +EXP=$test_dir/expect +CONF=$TMPFILE.conf + +cat > $CONF << ENDL +[fs_types] + ext4h = { + features = has_journal,extent,huge_file,^flex_bg,uninit_bg,dir_nlink,extra_isize,sparse_super,filetype,dir_index,ext_attr,resize_inode,64bit + blocksize = 1024 + inode_size = 256 + make_hugefiles = true + hugefiles_dir = / + hugefiles_slack = 32M + hugefiles_name = aaaaa + hugefiles_digits = 4 + hugefiles_size = 1M + zero_hugefiles = false + } + ext4m = { + features = has_journal,extent,huge_file,^flex_bg,uninit_bg,dir_nlink,extra_isize,sparse_super,filetype,dir_index,ext_attr,resize_inode,64bit,metadata_csum + blocksize = 1024 + inode_size = 256 + make_hugefiles = true + hugefiles_dir = / + hugefiles_slack = 32M + hugefiles_name = aaaaa + hugefiles_digits = 4 + hugefiles_size = 1M + zero_hugefiles = false + } +ENDL + +echo "tune2fs dangerous prompts test" > $OUT + +MKE2FS_CONFIG=$CONF $MKE2FS -F -T ext4h -o Linux -U 6fc3daa4-180d-4f2b-a6f2-f7a5efb79bcf $TMPFILE 524288 >> $OUT 2>&1 + +# trigger a filesystem check +$DEBUGFS -w -R 'ssv mtime now' $TMPFILE > /dev/null 2>&1 +$DEBUGFS -w -R 'ssv lastcheck 20000' $TMPFILE > /dev/null 2>&1 + +# add mcsum +echo "tune2fs -O metadata_csum test.img" >> $OUT +$TUNE2FS -O metadata_csum $TMPFILE >> $OUT 2>&1 +status=$? +echo Exit status is $status >> $OUT + +# check fs +$FSCK -f -y -N test_filesys $TMPFILE > /dev/null 2>&1 + +# add mcsum +echo "tune2fs -O metadata_csum test.img" >> $OUT +$TUNE2FS -O metadata_csum $TMPFILE >> $OUT 2>&1 +status=$? +echo Exit status is $status >> $OUT + +MKE2FS_CONFIG=$CONF $MKE2FS -F -T ext4h -o Linux -U 6fc3daa4-180d-4f2b-a6f2-f7a5efb79bcf $TMPFILE 524288 >> $OUT 2>&1 + +# dump and check +$DUMPE2FS $TMPFILE 2> /dev/null | grep '^Group 0:' -B99 -A20 | sed -f $cmd_dir/filter.sed > $OUT.before +$FSCK $FSCK_OPT -f -N test_filesys $TMPFILE >> $OUT 2>&1 +status=$? +echo Exit status is $status >> $OUT + +# add mcsum +echo "tune2fs -O metadata_csum test.img" >> $OUT +echo 'n' | TUNE2FS_FORCE_PROMPT=1 $TUNE2FS -O metadata_csum $TMPFILE >> $OUT 2>&1 +status=$? +echo Exit status is $status >> $OUT + +# change inode size +echo "tune2fs -I 512 test.img" >> $OUT +echo 'n' | TUNE2FS_FORCE_PROMPT=1 $TUNE2FS -I 512 $TMPFILE >> $OUT 2>&1 +status=$? +echo Exit status is $status >> $OUT + +# check +$FSCK -yD -N test_filesys $TMPFILE >> $OUT 2>&1 + +# dump and check +$DUMPE2FS $TMPFILE 2> /dev/null | grep '^Group 0:' -B99 -A20 | sed -f $cmd_dir/filter.sed > $OUT.after +echo "Change in FS metadata:" >> $OUT +diff -u $OUT.before $OUT.after | tail -n +3 >> $OUT +$FSCK $FSCK_OPT -N test_filesys $TMPFILE >> $OUT 2>&1 +status=$? +echo Exit status is $status >> $OUT + +$DUMPE2FS $TMPFILE 2> /dev/null | egrep '^(Filesystem features:|Filesystem UUID:|Inode size:)' > $OUT.before + +# add mcsum +echo "tune2fs -O metadata_csum test.img" >> $OUT +echo 'y' | TUNE2FS_FORCE_PROMPT=1 $TUNE2FS -O metadata_csum $TMPFILE >> $OUT 2>&1 +status=$? +echo Exit status is $status >> $OUT +$FSCK -yD -N test_filesys $TMPFILE >> $OUT 2>&1 + +# change inode size +echo "tune2fs -I 512 test.img" >> $OUT +echo 'y' | TUNE2FS_FORCE_PROMPT=1 $TUNE2FS -I 512 $TMPFILE >> $OUT 2>&1 +status=$? +echo Exit status is $status >> $OUT + +# change uuid +echo "tune2fs -U f0f0f0f0-f0f0-f0f0-f0f0-f0f0f0f0f0f0 test.img" >> $OUT +echo 'y' | TUNE2FS_FORCE_PROMPT=1 $TUNE2FS -U f0f0f0f0-f0f0-f0f0-f0f0-f0f0f0f0f0f0 $TMPFILE >> $OUT 2>&1 +status=$? +echo Exit status is $status >> $OUT + +# check +$FSCK -yD -N test_filesys $TMPFILE >> $OUT 2>&1 + +# dump and check +$DUMPE2FS $TMPFILE 2> /dev/null | egrep '^(Filesystem features:|Filesystem UUID:|Inode size:)' > $OUT.after +echo "Change in FS metadata:" >> $OUT +diff -u $OUT.before $OUT.after | tail -n +3 >> $OUT +$FSCK $FSCK_OPT -N test_filesys $TMPFILE >> $OUT 2>&1 +status=$? +echo Exit status is $status >> $OUT + +echo " " >> $OUT +echo "Testing with metadata checksum enabled" >> $OUT + +MKE2FS_CONFIG=$CONF $MKE2FS -F -T ext4m -o Linux -U 6fc3daa4-180d-4f2b-a6f2-f7a5efb79bcf $TMPFILE 524288 >> $OUT 2>&1 +$DUMPE2FS $TMPFILE 2> /dev/null | grep '^Group 0:' -B99 -A20 | sed -f $cmd_dir/filter.sed > $OUT.before +$FSCK $FSCK_OPT -f -N test_filesys $TMPFILE >> $OUT 2>&1 +status=$? +echo Exit status is $status >> $OUT + +# change uuid +echo "tune2fs -U random test.img" >> $OUT +echo 'n' | TUNE2FS_FORCE_PROMPT=1 $TUNE2FS -U random $TMPFILE >> $OUT 2>&1 +status=$? +echo Exit status is $status >> $OUT + +rm $TMPFILE $OUT.before $OUT.after $CONF + +# +# Do the verification +# + +sed -f $cmd_dir/filter.sed -e 's/test_filesys:.*//g' < $OUT > $OUT.new +mv $OUT.new $OUT + +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 +fi + +unset IMAGE FSCK_OPT OUT EXP CONF |