mirror of
https://github.com/xemu-project/xemu.git
synced 2025-01-27 23:12:46 +00:00
iotests: Replace IMGOPTS= by -o
Tests should not overwrite all user-supplied image options, but only add to it (which will effectively overwrite conflicting values). Accomplish this by passing options to _make_test_img via -o instead of $IMGOPTS. For some tests, there is no functional change because they already only appended options to IMGOPTS. For these, this patch is just a simplification. For others, this is a change, so they now heed user-specified $IMGOPTS. Some of those tests do not work with all image options, though, so we need to disable them accordingly. Signed-off-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com> Message-id: 20191107163708.833192-12-mreitz@redhat.com Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
parent
1c6d2f2128
commit
407fb56a8e
@ -40,19 +40,22 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
||||
# This tests qcow2-specific low-level functionality
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
# We want to test compat=0.10, which does not support refcount widths
|
||||
# other than 16
|
||||
_unsupported_imgopts 'refcount_bits=\([^1]\|.\([^6]\|$\)\)'
|
||||
|
||||
CLUSTER_SIZE=65536
|
||||
|
||||
# qcow2.py output depends on the exact options used, so override the command
|
||||
# line here as an exception
|
||||
for IMGOPTS in "compat=0.10" "compat=1.1"; do
|
||||
for compat in "compat=0.10" "compat=1.1"; do
|
||||
|
||||
echo
|
||||
echo ===== Testing with -o $IMGOPTS =====
|
||||
echo ===== Testing with -o $compat =====
|
||||
echo
|
||||
echo === Create image with unknown header extension ===
|
||||
echo
|
||||
_make_test_img 64M
|
||||
_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
|
||||
_check_test_img
|
||||
|
@ -50,8 +50,7 @@ size=128M
|
||||
echo
|
||||
echo "== Checking that image is clean on shutdown =="
|
||||
|
||||
IMGOPTS="compat=1.1,lazy_refcounts=on"
|
||||
_make_test_img $size
|
||||
_make_test_img -o "compat=1.1,lazy_refcounts=on" $size
|
||||
|
||||
$QEMU_IO -c "write -P 0x5a 0 512" "$TEST_IMG" | _filter_qemu_io
|
||||
|
||||
@ -62,8 +61,7 @@ _check_test_img
|
||||
echo
|
||||
echo "== Creating a dirty image file =="
|
||||
|
||||
IMGOPTS="compat=1.1,lazy_refcounts=on"
|
||||
_make_test_img $size
|
||||
_make_test_img -o "compat=1.1,lazy_refcounts=on" $size
|
||||
|
||||
_NO_VALGRIND \
|
||||
$QEMU_IO -c "write -P 0x5a 0 512" \
|
||||
@ -98,8 +96,7 @@ $QEMU_IO -c "read -P 0x5a 0 512" "$TEST_IMG" | _filter_qemu_io
|
||||
echo
|
||||
echo "== Opening a dirty image read/write should repair it =="
|
||||
|
||||
IMGOPTS="compat=1.1,lazy_refcounts=on"
|
||||
_make_test_img $size
|
||||
_make_test_img -o "compat=1.1,lazy_refcounts=on" $size
|
||||
|
||||
_NO_VALGRIND \
|
||||
$QEMU_IO -c "write -P 0x5a 0 512" \
|
||||
@ -117,8 +114,7 @@ $PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
echo
|
||||
echo "== Creating an image file with lazy_refcounts=off =="
|
||||
|
||||
IMGOPTS="compat=1.1,lazy_refcounts=off"
|
||||
_make_test_img $size
|
||||
_make_test_img -o "compat=1.1,lazy_refcounts=off" $size
|
||||
|
||||
_NO_VALGRIND \
|
||||
$QEMU_IO -c "write -P 0x5a 0 512" \
|
||||
@ -132,11 +128,9 @@ _check_test_img
|
||||
echo
|
||||
echo "== Committing to a backing file with lazy_refcounts=on =="
|
||||
|
||||
IMGOPTS="compat=1.1,lazy_refcounts=on"
|
||||
TEST_IMG="$TEST_IMG".base _make_test_img $size
|
||||
TEST_IMG="$TEST_IMG".base _make_test_img -o "compat=1.1,lazy_refcounts=on" $size
|
||||
|
||||
IMGOPTS="compat=1.1,lazy_refcounts=on,backing_file=$TEST_IMG.base"
|
||||
_make_test_img $size
|
||||
_make_test_img -o "compat=1.1,lazy_refcounts=on,backing_file=$TEST_IMG.base" $size
|
||||
|
||||
$QEMU_IO -c "write 0 512" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IMG commit "$TEST_IMG"
|
||||
@ -151,8 +145,7 @@ TEST_IMG="$TEST_IMG".base _check_test_img
|
||||
echo
|
||||
echo "== Changing lazy_refcounts setting at runtime =="
|
||||
|
||||
IMGOPTS="compat=1.1,lazy_refcounts=off"
|
||||
_make_test_img $size
|
||||
_make_test_img -o "compat=1.1,lazy_refcounts=off" $size
|
||||
|
||||
_NO_VALGRIND \
|
||||
$QEMU_IO -c "reopen -o lazy-refcounts=on" \
|
||||
@ -164,8 +157,7 @@ $QEMU_IO -c "reopen -o lazy-refcounts=on" \
|
||||
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
|
||||
_check_test_img
|
||||
|
||||
IMGOPTS="compat=1.1,lazy_refcounts=on"
|
||||
_make_test_img $size
|
||||
_make_test_img -o "compat=1.1,lazy_refcounts=on" $size
|
||||
|
||||
_NO_VALGRIND \
|
||||
$QEMU_IO -c "reopen -o lazy-refcounts=off" \
|
||||
|
@ -70,18 +70,18 @@ poke_file "$TEST_IMG" "$grain_table_size_offset" "\x01\x00\x00\x00"
|
||||
|
||||
echo
|
||||
echo "=== Testing monolithicFlat creation and opening ==="
|
||||
IMGOPTS="subformat=monolithicFlat" _make_test_img 2G
|
||||
_make_test_img -o "subformat=monolithicFlat" 2G
|
||||
_img_info
|
||||
_cleanup_test_img
|
||||
|
||||
echo
|
||||
echo "=== Testing monolithicFlat with zeroed_grain ==="
|
||||
IMGOPTS="subformat=monolithicFlat,zeroed_grain=on" _make_test_img 2G
|
||||
_make_test_img -o "subformat=monolithicFlat,zeroed_grain=on" 2G
|
||||
_cleanup_test_img
|
||||
|
||||
echo
|
||||
echo "=== Testing big twoGbMaxExtentFlat ==="
|
||||
IMGOPTS="subformat=twoGbMaxExtentFlat" _make_test_img 1000G
|
||||
_make_test_img -o "subformat=twoGbMaxExtentFlat" 1000G
|
||||
$QEMU_IMG info $TEST_IMG | _filter_testdir | sed -e 's/cid: [0-9]*/cid: XXXXXXXX/'
|
||||
_cleanup_test_img
|
||||
|
||||
@ -101,13 +101,13 @@ _img_info
|
||||
|
||||
echo
|
||||
echo "=== Testing truncated sparse ==="
|
||||
IMGOPTS="subformat=monolithicSparse" _make_test_img 100G
|
||||
_make_test_img -o "subformat=monolithicSparse" 100G
|
||||
truncate -s 10M $TEST_IMG
|
||||
_img_info
|
||||
|
||||
echo
|
||||
echo "=== Converting to streamOptimized from image with small cluster size==="
|
||||
TEST_IMG="$TEST_IMG.qcow2" IMGFMT=qcow2 IMGOPTS="cluster_size=4096" _make_test_img 1G
|
||||
TEST_IMG="$TEST_IMG.qcow2" IMGFMT=qcow2 _make_test_img -o "cluster_size=4096" 1G
|
||||
$QEMU_IO -f qcow2 -c "write -P 0xa 0 512" "$TEST_IMG.qcow2" | _filter_qemu_io
|
||||
$QEMU_IO -f qcow2 -c "write -P 0xb 10240 512" "$TEST_IMG.qcow2" | _filter_qemu_io
|
||||
$QEMU_IMG convert -f qcow2 -O vmdk -o subformat=streamOptimized "$TEST_IMG.qcow2" "$TEST_IMG" 2>&1
|
||||
@ -117,7 +117,7 @@ echo "=== Testing monolithicFlat with internally generated JSON file name ==="
|
||||
|
||||
echo '--- blkdebug ---'
|
||||
# Should work, because bdrv_dirname() works fine with blkdebug
|
||||
IMGOPTS="subformat=monolithicFlat" _make_test_img 64M
|
||||
_make_test_img -o "subformat=monolithicFlat" 64M
|
||||
$QEMU_IO -c "open -o driver=$IMGFMT,file.driver=blkdebug,file.image.filename=$TEST_IMG,file.inject-error.0.event=read_aio" \
|
||||
-c info \
|
||||
2>&1 \
|
||||
@ -126,7 +126,7 @@ _cleanup_test_img
|
||||
|
||||
echo '--- quorum ---'
|
||||
# Should not work, because bdrv_dirname() does not work with quorum
|
||||
IMGOPTS="subformat=monolithicFlat" _make_test_img 64M
|
||||
_make_test_img -o "subformat=monolithicFlat" 64M
|
||||
cp "$TEST_IMG" "$TEST_IMG.orig"
|
||||
|
||||
filename="json:{
|
||||
@ -161,7 +161,7 @@ _cleanup_test_img
|
||||
|
||||
echo
|
||||
echo "=== Testing 4TB monolithicFlat creation and IO ==="
|
||||
IMGOPTS="subformat=monolithicFlat" _make_test_img 4T
|
||||
_make_test_img -o "subformat=monolithicFlat" 4T
|
||||
_img_info
|
||||
$QEMU_IO -c "write -P 0xa 900G 512" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c "read -v 900G 1024" "$TEST_IMG" | _filter_qemu_io
|
||||
@ -170,7 +170,7 @@ _cleanup_test_img
|
||||
echo
|
||||
echo "=== Testing qemu-img map on extents ==="
|
||||
for fmt in monolithicSparse twoGbMaxExtentSparse; do
|
||||
IMGOPTS="subformat=$fmt" _make_test_img 31G
|
||||
_make_test_img -o "subformat=$fmt" 31G
|
||||
$QEMU_IO -c "write 65024 1k" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c "write 2147483136 1k" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c "write 5G 1k" "$TEST_IMG" | _filter_qemu_io
|
||||
|
@ -161,7 +161,7 @@ $QEMU_IO -c 'write 0k 64k' "$BACKING_IMG" | _filter_qemu_io
|
||||
# compat=0.10 is required in order to make the following discard actually
|
||||
# unallocate the sector rather than make it a zero sector - we want COW, after
|
||||
# all.
|
||||
IMGOPTS='compat=0.10' _make_test_img -b "$BACKING_IMG" 1G
|
||||
_make_test_img -o 'compat=0.10' -b "$BACKING_IMG" 1G
|
||||
# Write two clusters, the second one enforces creation of an L2 table after
|
||||
# the first data cluster.
|
||||
$QEMU_IO -c 'write 0k 64k' -c 'write 512M 64k' "$TEST_IMG" | _filter_qemu_io
|
||||
@ -401,7 +401,7 @@ echo
|
||||
echo "=== Discarding a non-covered in-bounds refblock ==="
|
||||
echo
|
||||
|
||||
IMGOPTS='refcount_bits=1' _make_test_img 64M
|
||||
_make_test_img -o 'refcount_bits=1' 64M
|
||||
|
||||
# Pretend there's a refblock somewhere where there is no refblock to
|
||||
# cover it (but the covering refblock has a valid index in the
|
||||
@ -425,7 +425,7 @@ echo
|
||||
echo "=== Discarding a refblock covered by an unaligned refblock ==="
|
||||
echo
|
||||
|
||||
IMGOPTS='refcount_bits=1' _make_test_img 64M
|
||||
_make_test_img -o 'refcount_bits=1' 64M
|
||||
|
||||
# Same as above
|
||||
poke_file "$TEST_IMG" "$(($rt_offset+8))" "\x00\x00\x00\x10\x00\x00\x00\x00"
|
||||
|
@ -41,11 +41,14 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
# Conversion between different compat versions can only really work
|
||||
# with refcount_bits=16
|
||||
_unsupported_imgopts 'refcount_bits=\([^1]\|.\([^6]\|$\)\)'
|
||||
|
||||
echo
|
||||
echo "=== Testing version downgrade with zero expansion ==="
|
||||
echo
|
||||
IMGOPTS="compat=1.1,lazy_refcounts=on" _make_test_img 64M
|
||||
_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
|
||||
$QEMU_IMG amend -o "compat=0.10" "$TEST_IMG"
|
||||
@ -56,7 +59,7 @@ _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
|
||||
_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
|
||||
@ -72,7 +75,7 @@ _check_test_img
|
||||
echo
|
||||
echo "=== Testing dirty version downgrade ==="
|
||||
echo
|
||||
IMGOPTS="compat=1.1,lazy_refcounts=on" _make_test_img 64M
|
||||
_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
|
||||
@ -85,7 +88,7 @@ _check_test_img
|
||||
echo
|
||||
echo "=== Testing version downgrade with unknown compat/autoclear flags ==="
|
||||
echo
|
||||
IMGOPTS="compat=1.1" _make_test_img 64M
|
||||
_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
|
||||
@ -96,7 +99,7 @@ _check_test_img
|
||||
echo
|
||||
echo "=== Testing version upgrade and resize ==="
|
||||
echo
|
||||
IMGOPTS="compat=0.10" _make_test_img 64M
|
||||
_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
|
||||
$QEMU_IMG amend -o "compat=1.1,lazy_refcounts=on,size=128M" "$TEST_IMG"
|
||||
@ -107,7 +110,7 @@ _check_test_img
|
||||
echo
|
||||
echo "=== Testing dirty lazy_refcounts=off ==="
|
||||
echo
|
||||
IMGOPTS="compat=1.1,lazy_refcounts=on" _make_test_img 64M
|
||||
_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
|
||||
@ -120,8 +123,8 @@ _check_test_img
|
||||
echo
|
||||
echo "=== Testing backing file ==="
|
||||
echo
|
||||
IMGOPTS="compat=1.1" _make_test_img 64M
|
||||
IMGOPTS="compat=1.1" TEST_IMG="$TEST_IMG.base" _make_test_img 64M
|
||||
_make_test_img -o "compat=1.1" 64M
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img -o "compat=1.1" 64M
|
||||
$QEMU_IO -c "write -P 0x2a 0 128k" "$TEST_IMG.base" | _filter_qemu_io
|
||||
$QEMU_IO -c "read -P 0 0 128k" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IMG amend -o "backing_file=$TEST_IMG.base,backing_fmt=qcow2" "$TEST_IMG"
|
||||
@ -131,7 +134,7 @@ _check_test_img
|
||||
echo
|
||||
echo "=== Testing invalid configurations ==="
|
||||
echo
|
||||
IMGOPTS="compat=0.10" _make_test_img 64M
|
||||
_make_test_img -o "compat=0.10" 64M
|
||||
$QEMU_IMG amend -o "lazy_refcounts=on" "$TEST_IMG"
|
||||
$QEMU_IMG amend -o "compat=1.1" "$TEST_IMG" # actually valid
|
||||
$QEMU_IMG amend -o "compat=0.10,lazy_refcounts=on" "$TEST_IMG"
|
||||
@ -144,7 +147,7 @@ $QEMU_IMG amend -o "preallocation=on" "$TEST_IMG"
|
||||
echo
|
||||
echo "=== Testing correct handling of unset value ==="
|
||||
echo
|
||||
IMGOPTS="compat=1.1,cluster_size=1k" _make_test_img 64M
|
||||
_make_test_img -o "compat=1.1,cluster_size=1k" 64M
|
||||
echo "Should work:"
|
||||
$QEMU_IMG amend -o "lazy_refcounts=on" "$TEST_IMG"
|
||||
echo "Should not work:" # Just to know which of these tests actually fails
|
||||
@ -153,7 +156,7 @@ $QEMU_IMG amend -o "cluster_size=64k" "$TEST_IMG"
|
||||
echo
|
||||
echo "=== Testing zero expansion on inactive clusters ==="
|
||||
echo
|
||||
IMGOPTS="compat=1.1" _make_test_img 64M
|
||||
_make_test_img -o "compat=1.1" 64M
|
||||
$QEMU_IO -c "write -z 0 128k" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IMG snapshot -c foo "$TEST_IMG"
|
||||
$QEMU_IO -c "write -P 0x2a 0 128k" "$TEST_IMG" | _filter_qemu_io
|
||||
@ -167,7 +170,7 @@ $QEMU_IO -c "read -P 0 0 128k" "$TEST_IMG" | _filter_qemu_io
|
||||
echo
|
||||
echo "=== Testing zero expansion on shared L2 table ==="
|
||||
echo
|
||||
IMGOPTS="compat=1.1" _make_test_img 64M
|
||||
_make_test_img -o "compat=1.1" 64M
|
||||
$QEMU_IO -c "write -z 0 128k" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IMG snapshot -c foo "$TEST_IMG"
|
||||
$QEMU_IMG amend -o "compat=0.10" "$TEST_IMG"
|
||||
@ -180,9 +183,9 @@ $QEMU_IO -c "read -P 0 0 128k" "$TEST_IMG" | _filter_qemu_io
|
||||
echo
|
||||
echo "=== Testing zero expansion on backed image ==="
|
||||
echo
|
||||
IMGOPTS="compat=1.1" TEST_IMG="$TEST_IMG.base" _make_test_img 64M
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img -o "compat=1.1" 64M
|
||||
$QEMU_IO -c "write -P 0x2a 0 128k" "$TEST_IMG.base" | _filter_qemu_io
|
||||
IMGOPTS="compat=1.1" _make_test_img -b "$TEST_IMG.base" 64M
|
||||
_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" 64M
|
||||
$QEMU_IO -c "read -P 0x2a 0 128k" -c "write -z 0 64k" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IMG amend -o "compat=0.10" "$TEST_IMG"
|
||||
_check_test_img
|
||||
@ -191,9 +194,9 @@ $QEMU_IO -c "read -P 0 0 64k" -c "read -P 0x2a 64k 64k" "$TEST_IMG" | _filter_qe
|
||||
echo
|
||||
echo "=== Testing zero expansion on backed inactive clusters ==="
|
||||
echo
|
||||
IMGOPTS="compat=1.1" TEST_IMG="$TEST_IMG.base" _make_test_img 64M
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img -o "compat=1.1" 64M
|
||||
$QEMU_IO -c "write -P 0x2a 0 128k" "$TEST_IMG.base" | _filter_qemu_io
|
||||
IMGOPTS="compat=1.1" _make_test_img -b "$TEST_IMG.base" 64M
|
||||
_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" 64M
|
||||
$QEMU_IO -c "write -z 0 64k" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IMG snapshot -c foo "$TEST_IMG"
|
||||
$QEMU_IO -c "write -P 0x42 0 128k" "$TEST_IMG" | _filter_qemu_io
|
||||
@ -207,9 +210,9 @@ $QEMU_IO -c "read -P 0 0 64k" -c "read -P 0x2a 64k 64k" "$TEST_IMG" | _filter_qe
|
||||
echo
|
||||
echo "=== Testing zero expansion on backed image with shared L2 table ==="
|
||||
echo
|
||||
IMGOPTS="compat=1.1" TEST_IMG="$TEST_IMG.base" _make_test_img 64M
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img -o "compat=1.1" 64M
|
||||
$QEMU_IO -c "write -P 0x2a 0 128k" "$TEST_IMG.base" | _filter_qemu_io
|
||||
IMGOPTS="compat=1.1" _make_test_img -b "$TEST_IMG.base" 64M
|
||||
_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" 64M
|
||||
$QEMU_IO -c "write -z 0 128k" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IMG snapshot -c foo "$TEST_IMG"
|
||||
$QEMU_IMG amend -o "compat=0.10" "$TEST_IMG"
|
||||
@ -222,7 +225,7 @@ $QEMU_IO -c "read -P 0 0 128k" "$TEST_IMG" | _filter_qemu_io
|
||||
echo
|
||||
echo "=== Testing preallocated zero expansion on full image ==="
|
||||
echo
|
||||
IMGOPTS="compat=1.1" TEST_IMG="$TEST_IMG" _make_test_img 64M
|
||||
TEST_IMG="$TEST_IMG" _make_test_img -o "compat=1.1" 64M
|
||||
$QEMU_IO -c "write -P 0x2a 0 64M" "$TEST_IMG" -c "write -z 0 64M" | _filter_qemu_io
|
||||
$QEMU_IMG amend -o "compat=0.10" "$TEST_IMG"
|
||||
_check_test_img
|
||||
@ -231,8 +234,8 @@ $QEMU_IO -c "read -P 0 0 64M" "$TEST_IMG" | _filter_qemu_io
|
||||
echo
|
||||
echo "=== Testing progress report without snapshot ==="
|
||||
echo
|
||||
IMGOPTS="compat=1.1" TEST_IMG="$TEST_IMG.base" _make_test_img 4G
|
||||
IMGOPTS="compat=1.1" _make_test_img -b "$TEST_IMG.base" 4G
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img -o "compat=1.1" 4G
|
||||
_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" 4G
|
||||
$QEMU_IO -c "write -z 0 64k" \
|
||||
-c "write -z 1G 64k" \
|
||||
-c "write -z 2G 64k" \
|
||||
@ -243,8 +246,8 @@ _check_test_img
|
||||
echo
|
||||
echo "=== Testing progress report with snapshot ==="
|
||||
echo
|
||||
IMGOPTS="compat=1.1" TEST_IMG="$TEST_IMG.base" _make_test_img 4G
|
||||
IMGOPTS="compat=1.1" _make_test_img -b "$TEST_IMG.base" 4G
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img -o "compat=1.1" 4G
|
||||
_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" 4G
|
||||
$QEMU_IO -c "write -z 0 64k" \
|
||||
-c "write -z 1G 64k" \
|
||||
-c "write -z 2G 64k" \
|
||||
@ -256,7 +259,7 @@ _check_test_img
|
||||
echo
|
||||
echo "=== Testing version downgrade with external data file ==="
|
||||
echo
|
||||
IMGOPTS="compat=1.1,data_file=$TEST_IMG.data" _make_test_img 64M
|
||||
_make_test_img -o "compat=1.1,data_file=$TEST_IMG.data" 64M
|
||||
$QEMU_IMG amend -o "compat=0.10" "$TEST_IMG"
|
||||
_img_info --format-specific
|
||||
_check_test_img
|
||||
@ -264,11 +267,11 @@ _check_test_img
|
||||
echo
|
||||
echo "=== Try changing the external data file ==="
|
||||
echo
|
||||
IMGOPTS="compat=1.1" _make_test_img 64M
|
||||
_make_test_img -o "compat=1.1" 64M
|
||||
$QEMU_IMG amend -o "data_file=foo" "$TEST_IMG"
|
||||
|
||||
echo
|
||||
IMGOPTS="compat=1.1,data_file=$TEST_IMG.data" _make_test_img 64M
|
||||
_make_test_img -o "compat=1.1,data_file=$TEST_IMG.data" 64M
|
||||
$QEMU_IMG amend -o "data_file=foo" "$TEST_IMG"
|
||||
_img_info --format-specific
|
||||
TEST_IMG="data-file.filename=$TEST_IMG.data,file.filename=$TEST_IMG" _img_info --format-specific --image-opts
|
||||
@ -281,7 +284,7 @@ TEST_IMG="data-file.filename=$TEST_IMG.data,file.filename=$TEST_IMG" _img_info -
|
||||
echo
|
||||
echo "=== Clearing and setting data-file-raw ==="
|
||||
echo
|
||||
IMGOPTS="compat=1.1,data_file=$TEST_IMG.data,data_file_raw=on" _make_test_img 64M
|
||||
_make_test_img -o "compat=1.1,data_file=$TEST_IMG.data,data_file_raw=on" 64M
|
||||
$QEMU_IMG amend -o "data_file_raw=on" "$TEST_IMG"
|
||||
_img_info --format-specific
|
||||
_check_test_img
|
||||
|
@ -47,8 +47,7 @@ echo
|
||||
cluster_sizes="16384 32768 65536 131072 262144 524288 1048576 2097152 4194304"
|
||||
|
||||
for s in $cluster_sizes; do
|
||||
IMGOPTS=$(_optstr_add "$IMGOPTS" "preallocation=metadata,cluster_size=$s") \
|
||||
_make_test_img 4G
|
||||
_make_test_img -o "preallocation=metadata,cluster_size=$s" 4G
|
||||
done
|
||||
|
||||
# success, all done
|
||||
|
@ -51,7 +51,7 @@ for create_mode in off falloc full; do
|
||||
echo
|
||||
echo "--- create_mode=$create_mode growth_mode=$growth_mode ---"
|
||||
|
||||
IMGOPTS="preallocation=$create_mode" _make_test_img ${CREATION_SIZE}K
|
||||
_make_test_img -o "preallocation=$create_mode" ${CREATION_SIZE}K
|
||||
$QEMU_IMG resize -f "$IMGFMT" --preallocation=$growth_mode "$TEST_IMG" +${GROWTH_SIZE}K
|
||||
|
||||
expected_size=0
|
||||
|
@ -65,7 +65,7 @@ echo
|
||||
echo '=== Repairing unreferenced data cluster in new refblock area ==='
|
||||
echo
|
||||
|
||||
IMGOPTS='cluster_size=512' _make_test_img 64M
|
||||
_make_test_img -o 'cluster_size=512' 64M
|
||||
# Allocate the first 128 kB in the image (first refblock)
|
||||
$QEMU_IO -c 'write 0 0x1b200' "$TEST_IMG" | _filter_qemu_io
|
||||
# should be 131072 == 0x20000
|
||||
|
@ -53,20 +53,20 @@ echo '=== refcount_bits limits ==='
|
||||
echo
|
||||
|
||||
# Must be positive (non-zero)
|
||||
IMGOPTS="$IMGOPTS,refcount_bits=0" _make_test_img 64M
|
||||
_make_test_img -o "refcount_bits=0" 64M
|
||||
# Must be positive (non-negative)
|
||||
IMGOPTS="$IMGOPTS,refcount_bits=-1" _make_test_img 64M
|
||||
_make_test_img -o "refcount_bits=-1" 64M
|
||||
# May not exceed 64
|
||||
IMGOPTS="$IMGOPTS,refcount_bits=128" _make_test_img 64M
|
||||
_make_test_img -o "refcount_bits=128" 64M
|
||||
# Must be a power of two
|
||||
IMGOPTS="$IMGOPTS,refcount_bits=42" _make_test_img 64M
|
||||
_make_test_img -o "refcount_bits=42" 64M
|
||||
|
||||
# 1 is the minimum
|
||||
IMGOPTS="$IMGOPTS,refcount_bits=1" _make_test_img 64M
|
||||
_make_test_img -o "refcount_bits=1" 64M
|
||||
print_refcount_bits
|
||||
|
||||
# 64 is the maximum
|
||||
IMGOPTS="$IMGOPTS,refcount_bits=64" _make_test_img 64M
|
||||
_make_test_img -o "refcount_bits=64" 64M
|
||||
print_refcount_bits
|
||||
|
||||
# 16 is the default
|
||||
@ -78,19 +78,19 @@ echo '=== refcount_bits and compat=0.10 ==='
|
||||
echo
|
||||
|
||||
# Should work
|
||||
IMGOPTS="$IMGOPTS,compat=0.10,refcount_bits=16" _make_test_img 64M
|
||||
_make_test_img -o "compat=0.10,refcount_bits=16" 64M
|
||||
print_refcount_bits
|
||||
|
||||
# Should not work
|
||||
IMGOPTS="$IMGOPTS,compat=0.10,refcount_bits=1" _make_test_img 64M
|
||||
IMGOPTS="$IMGOPTS,compat=0.10,refcount_bits=64" _make_test_img 64M
|
||||
_make_test_img -o "compat=0.10,refcount_bits=1" 64M
|
||||
_make_test_img -o "compat=0.10,refcount_bits=64" 64M
|
||||
|
||||
|
||||
echo
|
||||
echo '=== Snapshot limit on refcount_bits=1 ==='
|
||||
echo
|
||||
|
||||
IMGOPTS="$IMGOPTS,refcount_bits=1" _make_test_img 64M
|
||||
_make_test_img -o "refcount_bits=1" 64M
|
||||
print_refcount_bits
|
||||
|
||||
$QEMU_IO -c 'write 0 512' "$TEST_IMG" | _filter_qemu_io
|
||||
@ -106,7 +106,7 @@ echo
|
||||
echo '=== Snapshot limit on refcount_bits=2 ==='
|
||||
echo
|
||||
|
||||
IMGOPTS="$IMGOPTS,refcount_bits=2" _make_test_img 64M
|
||||
_make_test_img -o "refcount_bits=2" 64M
|
||||
print_refcount_bits
|
||||
|
||||
$QEMU_IO -c 'write 0 512' "$TEST_IMG" | _filter_qemu_io
|
||||
@ -124,7 +124,7 @@ echo
|
||||
echo '=== Compressed clusters with refcount_bits=1 ==='
|
||||
echo
|
||||
|
||||
IMGOPTS="$IMGOPTS,refcount_bits=1" _make_test_img 64M
|
||||
_make_test_img -o "refcount_bits=1" 64M
|
||||
print_refcount_bits
|
||||
|
||||
# Both should fit into a single host cluster; instead of failing to increase the
|
||||
@ -140,7 +140,7 @@ echo
|
||||
echo '=== MSb set in 64 bit refcount ==='
|
||||
echo
|
||||
|
||||
IMGOPTS="$IMGOPTS,refcount_bits=64" _make_test_img 64M
|
||||
_make_test_img -o "refcount_bits=64" 64M
|
||||
print_refcount_bits
|
||||
|
||||
$QEMU_IO -c 'write 0 512' "$TEST_IMG" | _filter_qemu_io
|
||||
@ -158,7 +158,7 @@ echo
|
||||
echo '=== Snapshot on maximum 64 bit refcount value ==='
|
||||
echo
|
||||
|
||||
IMGOPTS="$IMGOPTS,refcount_bits=64" _make_test_img 64M
|
||||
_make_test_img -o "refcount_bits=64" 64M
|
||||
print_refcount_bits
|
||||
|
||||
$QEMU_IO -c 'write 0 512' "$TEST_IMG" | _filter_qemu_io
|
||||
@ -239,7 +239,7 @@ echo
|
||||
echo '=== Testing too many references for check ==='
|
||||
echo
|
||||
|
||||
IMGOPTS="$IMGOPTS,refcount_bits=1" _make_test_img 64M
|
||||
_make_test_img -o "refcount_bits=1" 64M
|
||||
print_refcount_bits
|
||||
|
||||
# This cluster should be created at 0x50000
|
||||
@ -262,7 +262,7 @@ echo
|
||||
echo '=== Multiple walks necessary during amend ==='
|
||||
echo
|
||||
|
||||
IMGOPTS="$IMGOPTS,refcount_bits=1,cluster_size=512" _make_test_img 64k
|
||||
_make_test_img -o "refcount_bits=1,cluster_size=512" 64k
|
||||
|
||||
# Cluster 0 is the image header, clusters 1 to 4 are used by the L1 table, a
|
||||
# single L2 table, the reftable and a single refblock. This creates 58 data
|
||||
|
@ -64,8 +64,7 @@ echo
|
||||
# least 256 MB. We can achieve that by using preallocation=metadata for an image
|
||||
# which has a guest disk size of 256 MB.
|
||||
|
||||
IMGOPTS="$IMGOPTS,refcount_bits=64,cluster_size=512,preallocation=metadata" \
|
||||
_make_test_img 256M
|
||||
_make_test_img -o "refcount_bits=64,cluster_size=512,preallocation=metadata" 256M
|
||||
|
||||
# We know for sure that the L1 and refcount tables do not overlap with any other
|
||||
# structure because the metadata overlap checks would have caught that case.
|
||||
|
@ -50,7 +50,7 @@ echo
|
||||
# Preallocation speeds up the write operation, but preallocating everything will
|
||||
# destroy the purpose of the write; so preallocate one KB less than what would
|
||||
# cause a reftable growth...
|
||||
IMGOPTS='preallocation=metadata,cluster_size=1k' _make_test_img 64512K
|
||||
_make_test_img -o 'preallocation=metadata,cluster_size=1k' 64512K
|
||||
# ...and make the image the desired size afterwards.
|
||||
$QEMU_IMG resize "$TEST_IMG" 65M
|
||||
|
||||
@ -73,7 +73,7 @@ echo
|
||||
echo '--- Test 2 ---'
|
||||
echo
|
||||
|
||||
IMGOPTS='preallocation=metadata,cluster_size=1k' _make_test_img 64513K
|
||||
_make_test_img -o 'preallocation=metadata,cluster_size=1k' 64513K
|
||||
# This results in an L1 table growth which in turn results in some clusters at
|
||||
# the start of the image becoming free
|
||||
$QEMU_IMG resize "$TEST_IMG" 65M
|
||||
@ -96,7 +96,7 @@ echo
|
||||
echo '=== Allocating a new refcount block must not leave holes in the image ==='
|
||||
echo
|
||||
|
||||
IMGOPTS='cluster_size=512,refcount_bits=16' _make_test_img 1M
|
||||
_make_test_img -o 'cluster_size=512,refcount_bits=16' 1M
|
||||
|
||||
# This results in an image with 256 used clusters: the qcow2 header,
|
||||
# the refcount table, one refcount block, the L1 table, four L2 tables
|
||||
|
@ -114,7 +114,7 @@ for GROWTH_SIZE in 16 48 80; do
|
||||
for growth_mode in off metadata falloc full; do
|
||||
echo "--- cluster_size=$cluster_size growth_size=$GROWTH_SIZE create_mode=$create_mode growth_mode=$growth_mode ---"
|
||||
|
||||
IMGOPTS="preallocation=$create_mode,cluster_size=$cluster_size" _make_test_img ${CREATION_SIZE}
|
||||
_make_test_img -o "preallocation=$create_mode,cluster_size=$cluster_size" ${CREATION_SIZE}
|
||||
$QEMU_IMG resize -f "$IMGFMT" --preallocation=$growth_mode "$TEST_IMG" +${GROWTH_SIZE}K
|
||||
|
||||
host_size_0=$(get_image_size_on_host)
|
||||
|
@ -117,7 +117,7 @@ $QEMU_IO \
|
||||
-c "reopen -o cache-clean-interval=-1" \
|
||||
"$TEST_IMG" | _filter_qemu_io
|
||||
|
||||
IMGOPTS="cluster_size=256k" _make_test_img 32P
|
||||
_make_test_img -o "cluster_size=256k" 32P
|
||||
$QEMU_IO \
|
||||
-c "reopen -o l2-cache-entry-size=512,l2-cache-size=1T" \
|
||||
"$TEST_IMG" | _filter_qemu_io
|
||||
|
@ -45,8 +45,7 @@ echo
|
||||
echo '=== Check on an image with a multiple of 2^32 clusters ==='
|
||||
echo
|
||||
|
||||
IMGOPTS=$(_optstr_add "$IMGOPTS" "cluster_size=512") \
|
||||
_make_test_img 512
|
||||
_make_test_img -o "cluster_size=512" 512
|
||||
|
||||
# Allocate L2 table
|
||||
$QEMU_IO -c 'write 0 512' "$TEST_IMG" | _filter_qemu_io
|
||||
|
@ -95,7 +95,7 @@ stat -c "size=%s, blocks=%b" $TEST_IMG | _filter_blocks $extra_blocks $min_block
|
||||
for mode in off full falloc; do
|
||||
echo
|
||||
echo "== creating image with preallocation $mode =="
|
||||
IMGOPTS=preallocation=$mode _make_test_img $size | _filter_imgfmt
|
||||
_make_test_img -o preallocation=$mode $size | _filter_imgfmt
|
||||
stat -c "size=%s, blocks=%b" $TEST_IMG | _filter_blocks $extra_blocks $min_blocks $size
|
||||
done
|
||||
|
||||
|
@ -45,7 +45,7 @@ _supported_proto file
|
||||
echo "== Huge file =="
|
||||
echo
|
||||
|
||||
IMGOPTS='cluster_size=2M' _make_test_img 2T
|
||||
_make_test_img -o 'cluster_size=2M' 2T
|
||||
|
||||
$QEMU_IMG measure -O raw -f qcow2 "$TEST_IMG"
|
||||
$QEMU_IMG measure -O qcow2 -o cluster_size=64k -f qcow2 "$TEST_IMG"
|
||||
|
@ -51,8 +51,7 @@ echo === Preparing and starting VM ===
|
||||
echo
|
||||
|
||||
TEST_IMG="${TEST_IMG}.base" _make_test_img $size
|
||||
IMGOPTS=$(_optstr_add "$IMGOPTS" "backing_fmt=$IMGFMT") \
|
||||
TEST_IMG="${TEST_IMG}.mid" _make_test_img -b "${TEST_IMG}.base"
|
||||
TEST_IMG="${TEST_IMG}.mid" _make_test_img -o "backing_fmt=$IMGFMT" -b "${TEST_IMG}.base"
|
||||
_make_test_img -b "${TEST_IMG}.mid"
|
||||
TEST_IMG="${TEST_IMG}.ovl2" _make_test_img -b "${TEST_IMG}.mid"
|
||||
|
||||
|
@ -37,6 +37,8 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
# To use a different refcount width but 16 bits we need compat=1.1
|
||||
_unsupported_imgopts 'compat=0.10'
|
||||
|
||||
echo "== Creating huge file =="
|
||||
|
||||
@ -44,7 +46,7 @@ echo "== Creating huge file =="
|
||||
# of a HUGE (but very sparse) file. tmpfs works, ext4 does not.
|
||||
_require_large_file 513T
|
||||
|
||||
IMGOPTS='cluster_size=2M,refcount_bits=1' _make_test_img 513T
|
||||
_make_test_img -o 'cluster_size=2M,refcount_bits=1' 513T
|
||||
|
||||
echo "== Populating refcounts =="
|
||||
# We want an image with 256M refcounts * 2M clusters = 512T referenced.
|
||||
|
@ -40,6 +40,8 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
# External data files do not work with compat=0.10
|
||||
_unsupported_imgopts 'compat=0.10'
|
||||
|
||||
for mode in off metadata falloc full; do
|
||||
|
||||
@ -47,7 +49,7 @@ for mode in off metadata falloc full; do
|
||||
echo "=== preallocation=$mode ==="
|
||||
echo
|
||||
|
||||
IMGOPTS="preallocation=$mode" _make_test_img 64M
|
||||
_make_test_img -o "preallocation=$mode" 64M
|
||||
|
||||
printf "File size: "
|
||||
du -b $TEST_IMG | cut -f1
|
||||
@ -64,7 +66,7 @@ for mode in off metadata falloc full; do
|
||||
echo "=== External data file: preallocation=$mode ==="
|
||||
echo
|
||||
|
||||
IMGOPTS="data_file=$TEST_IMG.data,preallocation=$mode" _make_test_img 64M
|
||||
_make_test_img -o "data_file=$TEST_IMG.data,preallocation=$mode" 64M
|
||||
|
||||
echo -n "qcow2 file size: "
|
||||
du -b $TEST_IMG | cut -f1
|
||||
|
@ -41,13 +41,15 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
# External data files do not work with compat=0.10
|
||||
_unsupported_imgopts 'compat=0.10'
|
||||
|
||||
echo
|
||||
echo "=== Create and open image with external data file ==="
|
||||
echo
|
||||
|
||||
echo "With data file name in the image:"
|
||||
IMGOPTS="data_file=$TEST_IMG.data" _make_test_img 64M
|
||||
_make_test_img -o "data_file=$TEST_IMG.data" 64M
|
||||
_check_test_img
|
||||
|
||||
$QEMU_IO -c "open $TEST_IMG" -c "read -P 0 0 64k" 2>&1 | _filter_qemu_io | _filter_testdir
|
||||
@ -104,7 +106,7 @@ echo
|
||||
echo "=== Standalone image with external data file (efficient) ==="
|
||||
echo
|
||||
|
||||
IMGOPTS="data_file=$TEST_IMG.data" _make_test_img 64M
|
||||
_make_test_img -o "data_file=$TEST_IMG.data" 64M
|
||||
|
||||
echo -n "qcow2 file size before I/O: "
|
||||
du -b $TEST_IMG | cut -f1
|
||||
@ -154,7 +156,7 @@ echo
|
||||
echo "=== Standalone image with external data file (valid raw) ==="
|
||||
echo
|
||||
|
||||
IMGOPTS="data_file=$TEST_IMG.data,data_file_raw=on" _make_test_img 64M
|
||||
_make_test_img -o "data_file=$TEST_IMG.data,data_file_raw=on" 64M
|
||||
|
||||
echo -n "qcow2 file size before I/O: "
|
||||
du -b $TEST_IMG | cut -f1
|
||||
@ -187,7 +189,7 @@ echo
|
||||
echo "=== bdrv_co_block_status test for file and offset=0 ==="
|
||||
echo
|
||||
|
||||
IMGOPTS="data_file=$TEST_IMG.data" _make_test_img 64M
|
||||
_make_test_img -o "data_file=$TEST_IMG.data" 64M
|
||||
|
||||
$QEMU_IO -c 'write -P 0x11 0 1M' -f $IMGFMT "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c 'read -P 0x11 0 1M' -f $IMGFMT "$TEST_IMG" | _filter_qemu_io
|
||||
|
@ -55,9 +55,8 @@ disk_usage()
|
||||
}
|
||||
|
||||
size=2100M
|
||||
IMGOPTS="cluster_size=1M,preallocation=metadata"
|
||||
|
||||
_make_test_img $size
|
||||
_make_test_img -o "cluster_size=1M,preallocation=metadata" $size
|
||||
$QEMU_IO -c 'discard 0 10M' -c 'discard 2090M 10M' \
|
||||
-c 'write 2090M 10M' -c 'write 0 10M' "$TEST_IMG" | _filter_qemu_io
|
||||
|
||||
|
@ -41,7 +41,7 @@ _supported_os Linux
|
||||
echo '--- Writing to the image ---'
|
||||
|
||||
# Reduce cluster size so we get more and quicker I/O
|
||||
IMGOPTS='cluster_size=4096' _make_test_img 1M
|
||||
_make_test_img -o 'cluster_size=4096' 1M
|
||||
(for ((kb = 1024 - 4; kb >= 0; kb -= 4)); do \
|
||||
echo "aio_write -P 42 $((kb + 1))k 2k"; \
|
||||
done) \
|
||||
|
Loading…
x
Reference in New Issue
Block a user