mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-10 19:14:58 -06:00
iotests: Prepare for refcount_bits option
Some tests do not work well with certain refcount widths (i.e. you cannot create internal snapshots with refcount_bits=1), so make those widths unsupported. Furthermore, add another filter to _filter_img_create in common.filter which filters out the refcount_bits value. This is necessary for test 079, which does actually work with any refcount width, but invoking qemu-img directly leads to the refcount_bits value being visible in the output; use _make_test_img instead which will filter it out. Signed-off-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
8a17b83cc3
commit
5262caa754
13 changed files with 41 additions and 37 deletions
|
@ -43,6 +43,9 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
||||||
_supported_fmt qcow2
|
_supported_fmt qcow2
|
||||||
_supported_proto generic
|
_supported_proto generic
|
||||||
_supported_os Linux
|
_supported_os Linux
|
||||||
|
# refcount_bits must be at least 4 so we can create ten internal snapshots
|
||||||
|
# (1 bit supports none, 2 bits support two, 4 bits support 14)
|
||||||
|
_unsupported_imgopts 'refcount_bits=\(1\|2\)[^0-9]'
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "creating image"
|
echo "creating image"
|
||||||
|
|
|
@ -43,6 +43,8 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
||||||
_supported_fmt qcow2
|
_supported_fmt qcow2
|
||||||
_supported_proto generic
|
_supported_proto generic
|
||||||
_supported_os Linux
|
_supported_os Linux
|
||||||
|
# Internal snapshots are (currently) impossible with refcount_bits=1
|
||||||
|
_unsupported_imgopts 'refcount_bits=1[^0-9]'
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "creating image"
|
echo "creating image"
|
||||||
|
|
|
@ -46,6 +46,13 @@ _supported_proto file
|
||||||
_supported_os Linux
|
_supported_os Linux
|
||||||
_default_cache_mode "writethrough"
|
_default_cache_mode "writethrough"
|
||||||
_supported_cache_modes "writethrough" "none"
|
_supported_cache_modes "writethrough" "none"
|
||||||
|
# The refcount table tests expect a certain minimum width for refcount entries
|
||||||
|
# (so that the refcount table actually needs to grow); that minimum is 16 bits,
|
||||||
|
# being the default refcount entry width.
|
||||||
|
# 32 and 64 bits do not work either, however, due to different leaked cluster
|
||||||
|
# count on error.
|
||||||
|
# Thus, the only remaining option is refcount_bits=16.
|
||||||
|
_unsupported_imgopts 'refcount_bits=\([^1]\|.\([^6]\|$\)\)'
|
||||||
|
|
||||||
echo "Errors while writing 128 kB"
|
echo "Errors while writing 128 kB"
|
||||||
echo
|
echo
|
||||||
|
|
|
@ -44,6 +44,8 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
||||||
_supported_fmt qcow2
|
_supported_fmt qcow2
|
||||||
_supported_proto generic
|
_supported_proto generic
|
||||||
_supported_os Linux
|
_supported_os Linux
|
||||||
|
# Internal snapshots are (currently) impossible with refcount_bits=1
|
||||||
|
_unsupported_imgopts 'refcount_bits=1[^0-9]'
|
||||||
|
|
||||||
offset_size=24
|
offset_size=24
|
||||||
offset_l1_size=36
|
offset_l1_size=36
|
||||||
|
|
|
@ -41,6 +41,9 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
||||||
_supported_fmt qcow2
|
_supported_fmt qcow2
|
||||||
_supported_proto file
|
_supported_proto file
|
||||||
_supported_os Linux
|
_supported_os Linux
|
||||||
|
# A compat=0.10 image is created in this test which does not support anything
|
||||||
|
# other than refcount_bits=16
|
||||||
|
_unsupported_imgopts 'refcount_bits=\([^1]\|.\([^6]\|$\)\)'
|
||||||
|
|
||||||
function do_run_qemu()
|
function do_run_qemu()
|
||||||
{
|
{
|
||||||
|
|
|
@ -89,6 +89,8 @@ _supported_fmt qcow2
|
||||||
_supported_proto file
|
_supported_proto file
|
||||||
_supported_os Linux
|
_supported_os Linux
|
||||||
_require_command QEMU_NBD
|
_require_command QEMU_NBD
|
||||||
|
# Internal snapshots are (currently) impossible with refcount_bits=1
|
||||||
|
_unsupported_imgopts 'refcount_bits=1[^0-9]'
|
||||||
|
|
||||||
# Use -f raw instead of -f $IMGFMT for the NBD connection
|
# Use -f raw instead of -f $IMGFMT for the NBD connection
|
||||||
QEMU_IO_NBD="$QEMU_IO -f raw --cache=$CACHEMODE"
|
QEMU_IO_NBD="$QEMU_IO -f raw --cache=$CACHEMODE"
|
||||||
|
|
|
@ -35,6 +35,8 @@ status=1 # failure is the default!
|
||||||
_supported_fmt qcow2
|
_supported_fmt qcow2
|
||||||
_supported_proto file
|
_supported_proto file
|
||||||
_supported_os Linux
|
_supported_os Linux
|
||||||
|
# Because anything other than 16 would change the output of query-block
|
||||||
|
_unsupported_imgopts 'refcount_bits=\([^1]\|.\([^6]\|$\)\)'
|
||||||
|
|
||||||
function do_run_qemu()
|
function do_run_qemu()
|
||||||
{
|
{
|
||||||
|
|
|
@ -42,19 +42,13 @@ _supported_fmt qcow2
|
||||||
_supported_proto file nfs
|
_supported_proto file nfs
|
||||||
_supported_os Linux
|
_supported_os Linux
|
||||||
|
|
||||||
function test_qemu_img()
|
|
||||||
{
|
|
||||||
echo qemu-img "$@" | _filter_testdir
|
|
||||||
$QEMU_IMG "$@" 2>&1 | _filter_testdir
|
|
||||||
echo
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "=== Check option preallocation and cluster_size ==="
|
echo "=== Check option preallocation and cluster_size ==="
|
||||||
echo
|
echo
|
||||||
cluster_sizes="16384 32768 65536 131072 262144 524288 1048576 2097152 4194304"
|
cluster_sizes="16384 32768 65536 131072 262144 524288 1048576 2097152 4194304"
|
||||||
|
|
||||||
for s in $cluster_sizes; do
|
for s in $cluster_sizes; do
|
||||||
test_qemu_img create -f $IMGFMT -o preallocation=metadata,cluster_size=$s "$TEST_IMG" 4G
|
IMGOPTS=$(_optstr_add "$IMGOPTS" "preallocation=metadata,cluster_size=$s") \
|
||||||
|
_make_test_img 4G
|
||||||
done
|
done
|
||||||
|
|
||||||
# success, all done
|
# success, all done
|
||||||
|
|
|
@ -1,32 +1,14 @@
|
||||||
QA output created by 079
|
QA output created by 079
|
||||||
=== Check option preallocation and cluster_size ===
|
=== Check option preallocation and cluster_size ===
|
||||||
|
|
||||||
qemu-img create -f qcow2 -o preallocation=metadata,cluster_size=16384 TEST_DIR/t.qcow2 4G
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 preallocation='metadata'
|
||||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=4294967296 encryption=off cluster_size=16384 preallocation='metadata' lazy_refcounts=off
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 preallocation='metadata'
|
||||||
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 preallocation='metadata'
|
||||||
qemu-img create -f qcow2 -o preallocation=metadata,cluster_size=32768 TEST_DIR/t.qcow2 4G
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 preallocation='metadata'
|
||||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=4294967296 encryption=off cluster_size=32768 preallocation='metadata' lazy_refcounts=off
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 preallocation='metadata'
|
||||||
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 preallocation='metadata'
|
||||||
qemu-img create -f qcow2 -o preallocation=metadata,cluster_size=65536 TEST_DIR/t.qcow2 4G
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 preallocation='metadata'
|
||||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=4294967296 encryption=off cluster_size=65536 preallocation='metadata' lazy_refcounts=off
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 preallocation='metadata'
|
||||||
|
qemu-img: TEST_DIR/t.IMGFMT: Cluster size must be a power of two between 512 and 2048k
|
||||||
qemu-img create -f qcow2 -o preallocation=metadata,cluster_size=131072 TEST_DIR/t.qcow2 4G
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 preallocation='metadata'
|
||||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=4294967296 encryption=off cluster_size=131072 preallocation='metadata' lazy_refcounts=off
|
|
||||||
|
|
||||||
qemu-img create -f qcow2 -o preallocation=metadata,cluster_size=262144 TEST_DIR/t.qcow2 4G
|
|
||||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=4294967296 encryption=off cluster_size=262144 preallocation='metadata' lazy_refcounts=off
|
|
||||||
|
|
||||||
qemu-img create -f qcow2 -o preallocation=metadata,cluster_size=524288 TEST_DIR/t.qcow2 4G
|
|
||||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=4294967296 encryption=off cluster_size=524288 preallocation='metadata' lazy_refcounts=off
|
|
||||||
|
|
||||||
qemu-img create -f qcow2 -o preallocation=metadata,cluster_size=1048576 TEST_DIR/t.qcow2 4G
|
|
||||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=4294967296 encryption=off cluster_size=1048576 preallocation='metadata' lazy_refcounts=off
|
|
||||||
|
|
||||||
qemu-img create -f qcow2 -o preallocation=metadata,cluster_size=2097152 TEST_DIR/t.qcow2 4G
|
|
||||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=4294967296 encryption=off cluster_size=2097152 preallocation='metadata' lazy_refcounts=off
|
|
||||||
|
|
||||||
qemu-img create -f qcow2 -o preallocation=metadata,cluster_size=4194304 TEST_DIR/t.qcow2 4G
|
|
||||||
qemu-img: TEST_DIR/t.qcow2: Cluster size must be a power of two between 512 and 2048k
|
|
||||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=4294967296 encryption=off cluster_size=4194304 preallocation='metadata' lazy_refcounts=off
|
|
||||||
|
|
||||||
*** done
|
*** done
|
||||||
|
|
|
@ -42,6 +42,8 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
||||||
_supported_fmt qcow2
|
_supported_fmt qcow2
|
||||||
_supported_proto file
|
_supported_proto file
|
||||||
_supported_os Linux
|
_supported_os Linux
|
||||||
|
# Internal snapshots are (currently) impossible with refcount_bits=1
|
||||||
|
_unsupported_imgopts 'refcount_bits=1[^0-9]'
|
||||||
|
|
||||||
header_size=104
|
header_size=104
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,8 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
||||||
_supported_fmt qcow2
|
_supported_fmt qcow2
|
||||||
_supported_proto file
|
_supported_proto file
|
||||||
_supported_os Linux
|
_supported_os Linux
|
||||||
|
# Because anything other than 16 would change the output of qemu_io -c info
|
||||||
|
_unsupported_imgopts 'refcount_bits=\([^1]\|.\([^6]\|$\)\)'
|
||||||
|
|
||||||
# Using an image filename containing quotation marks will render the JSON data
|
# Using an image filename containing quotation marks will render the JSON data
|
||||||
# below invalid. In that case, we have little choice but simply not to run this
|
# below invalid. In that case, we have little choice but simply not to run this
|
||||||
|
|
|
@ -43,6 +43,8 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
||||||
_supported_fmt qcow2
|
_supported_fmt qcow2
|
||||||
_supported_proto file
|
_supported_proto file
|
||||||
_supported_os Linux
|
_supported_os Linux
|
||||||
|
# This test directly modifies a refblock so it relies on refcount_bits being 16
|
||||||
|
_unsupported_imgopts 'refcount_bits=\([^1]\|.\([^6]\|$\)\)'
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo '=== Repairing an image without any refcount table ==='
|
echo '=== Repairing an image without any refcount table ==='
|
||||||
|
|
|
@ -192,7 +192,8 @@ _filter_img_create()
|
||||||
-e "s# block_size=[0-9]\\+##g" \
|
-e "s# block_size=[0-9]\\+##g" \
|
||||||
-e "s# block_state_zero=\\(on\\|off\\)##g" \
|
-e "s# block_state_zero=\\(on\\|off\\)##g" \
|
||||||
-e "s# log_size=[0-9]\\+##g" \
|
-e "s# log_size=[0-9]\\+##g" \
|
||||||
-e "s/archipelago:a/TEST_DIR\//g"
|
-e "s/archipelago:a/TEST_DIR\//g" \
|
||||||
|
-e "s# refcount_bits=[0-9]\\+##g"
|
||||||
}
|
}
|
||||||
|
|
||||||
_filter_img_info()
|
_filter_img_info()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue