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/u_offset | |
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/u_offset')
-rw-r--r-- | tests/u_offset/script | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/tests/u_offset/script b/tests/u_offset/script new file mode 100644 index 0000000..c3e03b7 --- /dev/null +++ b/tests/u_offset/script @@ -0,0 +1,138 @@ +test_description="e2undo with the offset option (-o offset)" +OUT="$test_name.log" +TMPFILE2="${TMPFILE}_2" +TDB_FILE="$TMPFILE.e2undo" + +E2UNDO_FEATURE_COMPAT_OFFSET=1 + +trap "rm -f $TMPFILE2 $TDB_FILE" EXIT INT QUIT + +read_header_entry() { + # $2 is just used as a dummy - it is never used by e2undo + # when dumping the header + $E2UNDO -h "$1" "$2" | grep "^$3:" +} + +read_header_offset() { + read_header_entry "$TDB_FILE" "$TMPFILE" "fs offset" | cut -f2 +} + +read_header_compat() { + read_header_entry "$TDB_FILE" "$TMPFILE" "compat" | cut -f3 +} + +e2undo_offset_assert() { + if [ "$crc_exp" != "$crc_act" -o \ + "$offset_exp" != "$offset_act" -o \ + $(($compat_act & $E2UNDO_FEATURE_COMPAT_OFFSET)) -ne $compat_exp ] + then + echo "$1" >> "$test_name.failed" + echo "crc_exp: $crc_exp" >> "$test_name.failed" + echo "crc_act: $crc_act" >> "$test_name.failed" + echo "offset_exp: $offset_exp" >> "$test_name.failed" + echo "offset_act: $offset_act" >> "$test_name.failed" + echo "compat_exp: $compat_exp" >> "$test_name.failed" + echo "compat_act: $compat_act" >> "$test_name.failed" + fi +} + +init_fs() { + echo "#" >> "$OUT" + echo "# init fs for $1" >> "$OUT" + echo "#" >> "$OUT" + rm -f "$TDB_FILE" + dd if=/dev/zero of="$TMPFILE" bs=1k count=1024 > /dev/null 2>&1 + $MKE2FS -F -z "$TDB_FILE" -b 1024 -E offset=524288 "$TMPFILE" 512 \ + >> "$OUT" 2>&1 +} + +# +# test absence of the "-o N" option +# +test_e2undo_offset_no_option() { + init_fs "test_e2undo_offset_no_option" + + $E2UNDO "$TDB_FILE" "$TMPFILE" >> "$OUT" 2>&1 + + crc_exp=`dd if=/dev/zero bs=1k count=1024 2>/dev/null | $CRCSUM` + crc_act=`$CRCSUM "$TMPFILE"` + offset_exp=524288 + offset_act=`read_header_offset` + compat_exp=$E2UNDO_FEATURE_COMPAT_OFFSET + compat_act=`read_header_compat` + e2undo_offset_assert "test_e2undo_offset_no_option" +} + +# +# test removal of the offset feature in the undo header +# +test_e2undo_offset_no_option_remove_offset_header() { + init_fs "test_e2undo_offset_no_option_remove_offset_header" + dd if="$TMPFILE" of="$TMPFILE2" bs=1k count=512 skip=512 \ + > /dev/null 2>&1 + # offset feature will be removed from the undo header + $TUNE2FS -z "$TDB_FILE" -C 42 "$TMPFILE2" >> "$OUT" 2>&1 + + $E2UNDO "$TDB_FILE" "$TMPFILE2" >> "$OUT" 2>&1 + + crc_exp=`dd if=/dev/zero bs=1k count=512 2>/dev/null | $CRCSUM` + crc_act=`$CRCSUM "$TMPFILE2"` + offset_exp= + offset_act=`read_header_offset` + compat_exp=0 + compat_act=`read_header_compat` + e2undo_offset_assert "test_e2undo_offset_no_option_remove_offset_header" +} + +# +# test "-o 4096" +# +test_e2undo_offset_4096() { + init_fs "test_e2undo_offset_4096" + dd if=/dev/zero of="$TMPFILE2" bs=1k count=4 > /dev/null 2>&1 + dd if="$TMPFILE" of="$TMPFILE2" bs=1k count=512 skip=512 seek=4 \ + > /dev/null 2>&1 + + $E2UNDO -o 4096 "$TDB_FILE" "$TMPFILE2" >> "$OUT" 2>&1 + + crc_exp=`dd if=/dev/zero bs=1k count=516 2>/dev/null | $CRCSUM` + crc_act=`$CRCSUM "$TMPFILE2"` + # the same as in test_e2undo_offset_no_option + offset_exp=524288 + offset_act=`read_header_offset` + compat_exp=$E2UNDO_FEATURE_COMPAT_OFFSET + compat_act=`read_header_compat` + e2undo_offset_assert "test_e2undo_offset_4096" +} + +# +# test "-o 0" +# +test_e2undo_offset_0() { + init_fs "test_e2undo_offset_0" + dd if="$TMPFILE" of="$TMPFILE2" bs=1k count=512 skip=512 \ + > /dev/null 2>&1 + + $E2UNDO -o 0 "$TDB_FILE" "$TMPFILE2" >> "$OUT" 2>&1 + + crc_exp=`dd if=/dev/zero bs=1k count=512 2>/dev/null | $CRCSUM` + crc_act=`$CRCSUM "$TMPFILE2"` + # the same as in test_e2undo_offset_no_option + offset_exp=524288 + offset_act=`read_header_offset` + compat_exp=$E2UNDO_FEATURE_COMPAT_OFFSET + compat_act=`read_header_compat` + e2undo_offset_assert "test_e2undo_offset_0" +} + +test_e2undo_offset_no_option +test_e2undo_offset_no_option_remove_offset_header +test_e2undo_offset_4096 +test_e2undo_offset_0 + +if [ -e "$test_name.failed" ]; then + echo "$test_name: $test_description: failed" +else + echo "$test_name: $test_description: ok" + touch "$test_name.ok" +fi |