Commit 2ecec911 authored by Alberto Garcia's avatar Alberto Garcia Committed by Max Reitz
Browse files

iotests: Test downgrading an image using a small L2 slice size



expand_zero_clusters_in_l1() is used when downgrading qcow2 images
from v3 to v2 (compat=0.10). This is one of the functions that needed
more changes to support L2 slices, so this patch extends iotest 061 to
test downgrading a qcow2 image using a smaller slice size.

Signed-off-by: default avatarAlberto Garcia <berto@igalia.com>
Reviewed-by: default avatarEric Blake <eblake@redhat.com>
Reviewed-by: default avatarMax Reitz <mreitz@redhat.com>
Message-id: 3e5662dce5e4926c8fabbad4c0b9142b2a506dd4.1517840877.git.berto@igalia.com
Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
parent 4450c396
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -53,6 +53,22 @@ $PYTHON qcow2.py "$TEST_IMG" dump-header
$QEMU_IO -c "read -P 0 0 128k" "$TEST_IMG" | _filter_qemu_io
_check_test_img

echo
echo "=== Testing version downgrade with zero expansion and 4K cache entries ==="
echo
IMGOPTS="compat=1.1,lazy_refcounts=on" _make_test_img 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
$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
$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
_check_test_img

echo
echo "=== Testing dirty version downgrade ==="
echo
+61 −0
Original line number Diff line number Diff line
@@ -52,6 +52,67 @@ read 131072/131072 bytes at offset 0
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
No errors were found on the image.

=== Testing version downgrade with zero expansion and 4K cache entries ===

Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
wrote 131072/131072 bytes at offset 0
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
wrote 131072/131072 bytes at offset 33554432
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
128 KiB (0x20000) bytes     allocated at offset 0 bytes (0x0)
31.875 MiB (0x1fe0000) bytes not allocated at offset 128 KiB (0x20000)
128 KiB (0x20000) bytes     allocated at offset 32 MiB (0x2000000)
31.875 MiB (0x1fe0000) bytes not allocated at offset 32.125 MiB (0x2020000)
magic                     0x514649fb
version                   3
backing_file_offset       0x0
backing_file_size         0x0
cluster_bits              16
size                      67108864
crypt_method              0
l1_size                   1
l1_table_offset           0x30000
refcount_table_offset     0x10000
refcount_table_clusters   1
nb_snapshots              0
snapshot_offset           0x0
incompatible_features     0x0
compatible_features       0x1
autoclear_features        0x0
refcount_order            4
header_length             104

Header extension:
magic                     0x6803f857
length                    144
data                      <binary>

magic                     0x514649fb
version                   2
backing_file_offset       0x0
backing_file_size         0x0
cluster_bits              16
size                      67108864
crypt_method              0
l1_size                   1
l1_table_offset           0x30000
refcount_table_offset     0x10000
refcount_table_clusters   1
nb_snapshots              0
snapshot_offset           0x0
incompatible_features     0x0
compatible_features       0x0
autoclear_features        0x0
refcount_order            4
header_length             72

read 131072/131072 bytes at offset 0
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
read 131072/131072 bytes at offset 33554432
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
64 MiB (0x4000000) bytes not allocated at offset 0 bytes (0x0)
No errors were found on the image.

=== Testing dirty version downgrade ===

Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864