mirror of https://gitee.com/openkylin/qemu.git
iotests: massive use _qcow2_dump_header
We are going to add filtering in _qcow2_dump_header and want all tests use it. The patch is generated by commands: cd tests/qemu-iotests sed -ie 's/$PYTHON qcow2.py "$TEST_IMG" dump-header\($\| \)/_qcow2_dump_header\1/' ??? tests/* (the difficulty is to avoid converting dump-header-exts) Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Message-Id: <20211223160144.1097696-15-vsementsov@virtuozzo.com> Signed-off-by: Hanna Reitz <hreitz@redhat.com>
This commit is contained in:
parent
c5e627a6ec
commit
984d7a52d5
|
@ -58,21 +58,21 @@ for compat in "compat=0.10" "compat=1.1"; do
|
|||
echo
|
||||
_make_test_img -o $compat 64M
|
||||
$PYTHON qcow2.py "$TEST_IMG" add-header-ext 0x12345678 "This is a test header extension"
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header
|
||||
_qcow2_dump_header
|
||||
_check_test_img
|
||||
|
||||
echo
|
||||
echo === Rewrite header with no backing file ===
|
||||
echo
|
||||
$QEMU_IMG rebase -u -b "" "$TEST_IMG"
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header
|
||||
_qcow2_dump_header
|
||||
_check_test_img
|
||||
|
||||
echo
|
||||
echo === Add a backing file and format ===
|
||||
echo
|
||||
$QEMU_IMG rebase -u -b "/some/backing/file/path" -F host_device "$TEST_IMG"
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header
|
||||
_qcow2_dump_header
|
||||
done
|
||||
|
||||
# success, all done
|
||||
|
|
|
@ -58,7 +58,7 @@ $PYTHON qcow2.py "$TEST_IMG" set-feature-bit incompatible 63
|
|||
|
||||
# Without feature table
|
||||
$PYTHON qcow2.py "$TEST_IMG" del-header-ext 0x6803f857
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep features
|
||||
_qcow2_dump_header | grep features
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header-exts
|
||||
_img_info
|
||||
|
||||
|
@ -107,7 +107,7 @@ echo === Create image with unknown autoclear feature bit ===
|
|||
echo
|
||||
_make_test_img 64M
|
||||
$PYTHON qcow2.py "$TEST_IMG" set-feature-bit autoclear 63
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep features
|
||||
_qcow2_dump_header | grep features
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header-exts
|
||||
|
||||
echo
|
||||
|
@ -115,7 +115,7 @@ echo === Repair image ===
|
|||
echo
|
||||
_check_test_img -r all
|
||||
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep features
|
||||
_qcow2_dump_header | grep features
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header-exts
|
||||
|
||||
# success, all done
|
||||
|
|
|
@ -59,7 +59,7 @@ _make_test_img -o "compat=1.1,lazy_refcounts=on" $size
|
|||
$QEMU_IO -c "write -P 0x5a 0 512" "$TEST_IMG" | _filter_qemu_io
|
||||
|
||||
# The dirty bit must not be set
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
_check_test_img
|
||||
|
||||
echo
|
||||
|
@ -73,7 +73,7 @@ $QEMU_IO -c "write -P 0x5a 0 512" \
|
|||
| _filter_qemu_io
|
||||
|
||||
# The dirty bit must be set
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
_check_test_img
|
||||
|
||||
echo
|
||||
|
@ -82,7 +82,7 @@ echo "== Read-only access must still work =="
|
|||
$QEMU_IO -r -c "read -P 0x5a 0 512" "$TEST_IMG" | _filter_qemu_io
|
||||
|
||||
# The dirty bit must be set
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
|
||||
echo
|
||||
echo "== Repairing the image file must succeed =="
|
||||
|
@ -90,7 +90,7 @@ echo "== Repairing the image file must succeed =="
|
|||
_check_test_img -r all
|
||||
|
||||
# The dirty bit must not be set
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
|
||||
echo
|
||||
echo "== Data should still be accessible after repair =="
|
||||
|
@ -108,12 +108,12 @@ $QEMU_IO -c "write -P 0x5a 0 512" \
|
|||
| _filter_qemu_io
|
||||
|
||||
# The dirty bit must be set
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
|
||||
$QEMU_IO -c "write 0 512" "$TEST_IMG" | _filter_qemu_io
|
||||
|
||||
# The dirty bit must not be set
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
|
||||
echo
|
||||
echo "== Creating an image file with lazy_refcounts=off =="
|
||||
|
@ -126,7 +126,7 @@ $QEMU_IO -c "write -P 0x5a 0 512" \
|
|||
| _filter_qemu_io
|
||||
|
||||
# The dirty bit must not be set since lazy_refcounts=off
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
_check_test_img
|
||||
|
||||
echo
|
||||
|
@ -141,7 +141,7 @@ $QEMU_IO -c "write 0 512" "$TEST_IMG" | _filter_qemu_io
|
|||
$QEMU_IMG commit "$TEST_IMG"
|
||||
|
||||
# The dirty bit must not be set
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
$PYTHON qcow2.py "$TEST_IMG".base dump-header | grep incompatible_features
|
||||
|
||||
_check_test_img
|
||||
|
@ -159,7 +159,7 @@ $QEMU_IO -c "reopen -o lazy-refcounts=on" \
|
|||
| _filter_qemu_io
|
||||
|
||||
# The dirty bit must be set
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
_check_test_img
|
||||
|
||||
_make_test_img -o "compat=1.1,lazy_refcounts=on" $size
|
||||
|
@ -171,7 +171,7 @@ $QEMU_IO -c "reopen -o lazy-refcounts=off" \
|
|||
| _filter_qemu_io
|
||||
|
||||
# The dirty bit must not be set
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
_check_test_img
|
||||
|
||||
|
||||
|
|
|
@ -80,13 +80,13 @@ poke_file "$TEST_IMG" "$l1_offset" "\x80\x00\x00\x00\x00\x03\x00\x00"
|
|||
_check_test_img
|
||||
|
||||
# The corrupt bit should not be set anyway
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
|
||||
# Try to write something, thereby forcing the corrupt bit to be set
|
||||
$QEMU_IO -c "$OPEN_RW" -c "write -P 0x2a 0 512" | _filter_qemu_io
|
||||
|
||||
# The corrupt bit must now be set
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
|
||||
# This information should be available through qemu-img info
|
||||
_img_info --format-specific
|
||||
|
@ -114,19 +114,19 @@ poke_file "$TEST_IMG" "$(($rb_offset+8))" "\x00\x01"
|
|||
# Redirect new data cluster onto refcount block
|
||||
poke_file "$TEST_IMG" "$l2_offset" "\x80\x00\x00\x00\x00\x02\x00\x00"
|
||||
_check_test_img
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
$QEMU_IO -c "$OPEN_RW" -c "write -P 0x2a 0 512" | _filter_qemu_io
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
|
||||
# Try to fix it
|
||||
_check_test_img -r all
|
||||
|
||||
# The corrupt bit should be cleared
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
|
||||
# Look if it's really really fixed
|
||||
$QEMU_IO -c "$OPEN_RW" -c "write -P 0x2a 0 512" | _filter_qemu_io
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
|
||||
echo
|
||||
echo "=== Testing cluster data reference into inactive L2 table ==="
|
||||
|
@ -139,13 +139,13 @@ $QEMU_IO -c "$OPEN_RW" -c "write -P 2 0 512" | _filter_qemu_io
|
|||
poke_file "$TEST_IMG" "$l2_offset_after_snapshot" \
|
||||
"\x80\x00\x00\x00\x00\x04\x00\x00"
|
||||
_check_test_img
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
$QEMU_IO -c "$OPEN_RW" -c "write -P 3 0 512" | _filter_qemu_io
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
_check_test_img -r all
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
$QEMU_IO -c "$OPEN_RW" -c "write -P 4 0 512" | _filter_qemu_io
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
|
||||
# Check data
|
||||
$QEMU_IO -c "$OPEN_RO" -c "read -P 4 0 512" | _filter_qemu_io
|
||||
|
|
|
@ -55,9 +55,9 @@ echo "=== Testing version downgrade with zero expansion ==="
|
|||
echo
|
||||
_make_test_img -o "compat=1.1,lazy_refcounts=on" 64M
|
||||
$QEMU_IO -c "write -z 0 128k" "$TEST_IMG" | _filter_qemu_io
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header
|
||||
_qcow2_dump_header
|
||||
$QEMU_IMG amend -o "compat=0.10" "$TEST_IMG"
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header
|
||||
_qcow2_dump_header
|
||||
$QEMU_IO -c "read -P 0 0 128k" "$TEST_IMG" | _filter_qemu_io
|
||||
_check_test_img
|
||||
|
||||
|
@ -68,10 +68,10 @@ _make_test_img -o "compat=1.1,lazy_refcounts=on" 64M
|
|||
$QEMU_IO -c "write -z 0 128k" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c "write -z 32M 128k" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c map "$TEST_IMG" | _filter_qemu_io
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header
|
||||
_qcow2_dump_header
|
||||
$QEMU_IMG amend -o "compat=0.10" --image-opts \
|
||||
driver=qcow2,file.filename=$TEST_IMG,l2-cache-entry-size=4096
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header
|
||||
_qcow2_dump_header
|
||||
$QEMU_IO -c "read -P 0 0 128k" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c "read -P 0 32M 128k" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c map "$TEST_IMG" | _filter_qemu_io
|
||||
|
@ -84,9 +84,9 @@ _make_test_img -o "compat=1.1,lazy_refcounts=on" 64M
|
|||
_NO_VALGRIND \
|
||||
$QEMU_IO -c "write -P 0x2a 0 128k" -c flush \
|
||||
-c "sigraise $(kill -l KILL)" "$TEST_IMG" 2>&1 | _filter_qemu_io
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header
|
||||
_qcow2_dump_header
|
||||
$QEMU_IMG amend -o "compat=0.10" "$TEST_IMG"
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header
|
||||
_qcow2_dump_header
|
||||
$QEMU_IO -c "read -P 0x2a 0 128k" "$TEST_IMG" | _filter_qemu_io
|
||||
_check_test_img
|
||||
|
||||
|
@ -96,9 +96,9 @@ echo
|
|||
_make_test_img -o "compat=1.1" 64M
|
||||
$PYTHON qcow2.py "$TEST_IMG" set-feature-bit compatible 42
|
||||
$PYTHON qcow2.py "$TEST_IMG" set-feature-bit autoclear 42
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header
|
||||
_qcow2_dump_header
|
||||
$QEMU_IMG amend -o "compat=0.10" "$TEST_IMG"
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header
|
||||
_qcow2_dump_header
|
||||
_check_test_img
|
||||
|
||||
echo
|
||||
|
@ -106,9 +106,9 @@ echo "=== Testing version upgrade and resize ==="
|
|||
echo
|
||||
_make_test_img -o "compat=0.10" 64M
|
||||
$QEMU_IO -c "write -P 0x2a 42M 64k" "$TEST_IMG" | _filter_qemu_io
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header
|
||||
_qcow2_dump_header
|
||||
$QEMU_IMG amend -o "compat=1.1,lazy_refcounts=on,size=128M" "$TEST_IMG"
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header
|
||||
_qcow2_dump_header
|
||||
$QEMU_IO -c "read -P 0x2a 42M 64k" "$TEST_IMG" | _filter_qemu_io
|
||||
_check_test_img
|
||||
|
||||
|
@ -120,29 +120,29 @@ $QEMU_IO -c "write -P 0x2a 24M 64k" "$TEST_IMG" | _filter_qemu_io
|
|||
$QEMU_IMG snapshot -c foo "$TEST_IMG"
|
||||
$QEMU_IMG resize "$TEST_IMG" 64M &&
|
||||
echo "unexpected pass"
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep '^\(version\|size\|nb_snap\)'
|
||||
_qcow2_dump_header | grep '^\(version\|size\|nb_snap\)'
|
||||
|
||||
$QEMU_IMG amend -o "compat=1.1,size=128M" "$TEST_IMG" ||
|
||||
echo "unexpected fail"
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep '^\(version\|size\|nb_snap\)'
|
||||
_qcow2_dump_header | grep '^\(version\|size\|nb_snap\)'
|
||||
|
||||
$QEMU_IMG snapshot -c bar "$TEST_IMG"
|
||||
$QEMU_IMG resize --shrink "$TEST_IMG" 64M ||
|
||||
echo "unexpected fail"
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep '^\(version\|size\|nb_snap\)'
|
||||
_qcow2_dump_header | grep '^\(version\|size\|nb_snap\)'
|
||||
|
||||
$QEMU_IMG amend -o "compat=0.10,size=32M" "$TEST_IMG" &&
|
||||
echo "unexpected pass"
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep '^\(version\|size\|nb_snap\)'
|
||||
_qcow2_dump_header | grep '^\(version\|size\|nb_snap\)'
|
||||
|
||||
$QEMU_IMG snapshot -a bar "$TEST_IMG" ||
|
||||
echo "unexpected fail"
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep '^\(version\|size\|nb_snap\)'
|
||||
_qcow2_dump_header | grep '^\(version\|size\|nb_snap\)'
|
||||
|
||||
$QEMU_IMG snapshot -d bar "$TEST_IMG"
|
||||
$QEMU_IMG amend -o "compat=0.10,size=32M" "$TEST_IMG" ||
|
||||
echo "unexpected fail"
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep '^\(version\|size\|nb_snap\)'
|
||||
_qcow2_dump_header | grep '^\(version\|size\|nb_snap\)'
|
||||
|
||||
_check_test_img
|
||||
|
||||
|
@ -154,9 +154,9 @@ _make_test_img -o "compat=1.1,lazy_refcounts=on" 64M
|
|||
_NO_VALGRIND \
|
||||
$QEMU_IO -c "write -P 0x2a 0 128k" -c flush \
|
||||
-c "sigraise $(kill -l KILL)" "$TEST_IMG" 2>&1 | _filter_qemu_io
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header
|
||||
_qcow2_dump_header
|
||||
$QEMU_IMG amend -o "lazy_refcounts=off" "$TEST_IMG"
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header
|
||||
_qcow2_dump_header
|
||||
$QEMU_IO -c "read -P 0x2a 0 128k" "$TEST_IMG" | _filter_qemu_io
|
||||
_check_test_img
|
||||
|
||||
|
|
|
@ -140,7 +140,7 @@ $QEMU_IO \
|
|||
|
||||
# The dirty bit must not be set
|
||||
# (Filter the external data file bit)
|
||||
if $PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features \
|
||||
if _qcow2_dump_header | grep incompatible_features \
|
||||
| grep -q '\<0\>'
|
||||
then
|
||||
echo 'ERROR: Dirty bit set'
|
||||
|
|
|
@ -61,13 +61,13 @@ echo
|
|||
echo "=== Testing compression type incompatible bit setting for zlib ==="
|
||||
echo
|
||||
_make_test_img -o compression_type=zlib 64M
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
|
||||
echo
|
||||
echo "=== Testing compression type incompatible bit setting for zstd ==="
|
||||
echo
|
||||
_make_test_img -o compression_type=zstd 64M
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
|
||||
echo
|
||||
echo "=== Testing zlib with incompatible bit set ==="
|
||||
|
@ -75,7 +75,7 @@ echo
|
|||
_make_test_img -o compression_type=zlib 64M
|
||||
$PYTHON qcow2.py "$TEST_IMG" set-feature-bit incompatible 3
|
||||
# to make sure the bit was actually set
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
|
||||
if $QEMU_IMG info "$TEST_IMG" >/dev/null 2>&1 ; then
|
||||
echo "Error: The image opened successfully. The image must not be opened."
|
||||
|
@ -87,7 +87,7 @@ echo
|
|||
_make_test_img -o compression_type=zstd 64M
|
||||
$PYTHON qcow2.py "$TEST_IMG" set-header incompatible_features 0
|
||||
# to make sure the bit was actually unset
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_qcow2_dump_header | grep incompatible_features
|
||||
|
||||
if $QEMU_IMG info "$TEST_IMG" >/dev/null 2>&1 ; then
|
||||
echo "Error: The image opened successfully. The image must not be opened."
|
||||
|
|
Loading…
Reference in New Issue