mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 08:13:54 -06:00
iotests: Split 177 into two parts for compat=0.10
When originally written, test 177 explicitly took care to run with compat=0.10. Then I botched my own test in commit81c219ac
andf0a9c18f
, by adding additional actions that require v3 images. Split out the new code into a new v3-only test, 204, and revert 177 back to its original state other than a new comment. Reported-by: Max Reitz <mreitz@redhat.com> Signed-off-by: Eric Blake <eblake@redhat.com> Message-id: 20180117165420.15946-2-eblake@redhat.com Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
parent
2291712c39
commit
d6ac6e9363
5 changed files with 193 additions and 32 deletions
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# Test corner cases with unusual block geometries
|
# Test corner cases with unusual block geometries
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016-2017 Red Hat, Inc.
|
# Copyright (C) 2016-2018 Red Hat, Inc.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
@ -37,13 +37,15 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
||||||
. ./common.rc
|
. ./common.rc
|
||||||
. ./common.filter
|
. ./common.filter
|
||||||
|
|
||||||
|
# This test is runnable under compat=0.10; see test 204 for additional
|
||||||
|
# tests specific to compat=1.1.
|
||||||
|
|
||||||
_supported_fmt qcow2
|
_supported_fmt qcow2
|
||||||
_supported_proto file
|
_supported_proto file
|
||||||
|
|
||||||
CLUSTER_SIZE=1M
|
CLUSTER_SIZE=1M
|
||||||
size=128M
|
size=128M
|
||||||
options=driver=blkdebug,image.driver=qcow2
|
options=driver=blkdebug,image.driver=qcow2
|
||||||
nested_opts=image.file.driver=file,image.file.filename=$TEST_IMG
|
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "== setting up files =="
|
echo "== setting up files =="
|
||||||
|
@ -51,7 +53,7 @@ echo "== setting up files =="
|
||||||
TEST_IMG="$TEST_IMG.base" _make_test_img $size
|
TEST_IMG="$TEST_IMG.base" _make_test_img $size
|
||||||
$QEMU_IO -c "write -P 11 0 $size" "$TEST_IMG.base" | _filter_qemu_io
|
$QEMU_IO -c "write -P 11 0 $size" "$TEST_IMG.base" | _filter_qemu_io
|
||||||
_make_test_img -b "$TEST_IMG.base"
|
_make_test_img -b "$TEST_IMG.base"
|
||||||
$QEMU_IO -c "write -P 22 0 110M" "$TEST_IMG" | _filter_qemu_io
|
$QEMU_IO -c "write -P 22 0 $size" "$TEST_IMG" | _filter_qemu_io
|
||||||
|
|
||||||
# Limited to 64k max-transfer
|
# Limited to 64k max-transfer
|
||||||
echo
|
echo
|
||||||
|
@ -81,13 +83,6 @@ limits=align=512,opt-write-zero=15M,max-write-zero=15M,opt-discard=15M,max-disca
|
||||||
$QEMU_IO -c "open -o $options,$limits blkdebug::$TEST_IMG" \
|
$QEMU_IO -c "open -o $options,$limits blkdebug::$TEST_IMG" \
|
||||||
-c "discard 80000001 30M" | _filter_qemu_io
|
-c "discard 80000001 30M" | _filter_qemu_io
|
||||||
|
|
||||||
echo
|
|
||||||
echo "== block status smaller than alignment =="
|
|
||||||
limits=align=4k
|
|
||||||
$QEMU_IO -c "open -o $options,$limits blkdebug::$TEST_IMG" \
|
|
||||||
-c "alloc 1 1" -c "alloc 0x6dffff0 1000" -c "alloc 127m 5P" \
|
|
||||||
-c map | _filter_qemu_io
|
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "== verify image content =="
|
echo "== verify image content =="
|
||||||
|
|
||||||
|
@ -110,13 +105,10 @@ function verify_io()
|
||||||
echo read -P 0 32M 32M
|
echo read -P 0 32M 32M
|
||||||
echo read -P 22 64M 13M
|
echo read -P 22 64M 13M
|
||||||
echo read -P $discarded 77M 29M
|
echo read -P $discarded 77M 29M
|
||||||
echo read -P 22 106M 4M
|
echo read -P 22 106M 22M
|
||||||
echo read -P 11 110M 18M
|
|
||||||
}
|
}
|
||||||
|
|
||||||
verify_io | $QEMU_IO -r "$TEST_IMG" | _filter_qemu_io
|
verify_io | $QEMU_IO -r "$TEST_IMG" | _filter_qemu_io
|
||||||
$QEMU_IMG map --image-opts "$options,$nested_opts,align=4k" \
|
|
||||||
| _filter_qemu_img_map
|
|
||||||
|
|
||||||
_check_test_img
|
_check_test_img
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@ Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
|
||||||
wrote 134217728/134217728 bytes at offset 0
|
wrote 134217728/134217728 bytes at offset 0
|
||||||
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
|
||||||
wrote 115343360/115343360 bytes at offset 0
|
wrote 134217728/134217728 bytes at offset 0
|
||||||
110 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
|
||||||
== constrained alignment and max-transfer ==
|
== constrained alignment and max-transfer ==
|
||||||
wrote 131072/131072 bytes at offset 1000
|
wrote 131072/131072 bytes at offset 1000
|
||||||
|
@ -26,13 +26,6 @@ wrote 33554432/33554432 bytes at offset 33554432
|
||||||
discard 31457280/31457280 bytes at offset 80000001
|
discard 31457280/31457280 bytes at offset 80000001
|
||||||
30 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
30 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
|
||||||
== block status smaller than alignment ==
|
|
||||||
1/1 bytes allocated at offset 1 bytes
|
|
||||||
16/1000 bytes allocated at offset 110 MiB
|
|
||||||
0/1048576 bytes allocated at offset 127 MiB
|
|
||||||
110 MiB (0x6e00000) bytes allocated at offset 0 bytes (0x0)
|
|
||||||
18 MiB (0x1200000) bytes not allocated at offset 110 MiB (0x6e00000)
|
|
||||||
|
|
||||||
== verify image content ==
|
== verify image content ==
|
||||||
read 1000/1000 bytes at offset 0
|
read 1000/1000 bytes at offset 0
|
||||||
1000 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
1000 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
@ -50,14 +43,7 @@ read 13631488/13631488 bytes at offset 67108864
|
||||||
13 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
13 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
read 30408704/30408704 bytes at offset 80740352
|
read 30408704/30408704 bytes at offset 80740352
|
||||||
29 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
29 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
read 4194304/4194304 bytes at offset 111149056
|
read 23068672/23068672 bytes at offset 111149056
|
||||||
4 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
22 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
read 18874368/18874368 bytes at offset 115343360
|
|
||||||
18 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
||||||
Offset Length File
|
|
||||||
0 0x800000 TEST_DIR/t.IMGFMT
|
|
||||||
0x900000 0x2400000 TEST_DIR/t.IMGFMT
|
|
||||||
0x3c00000 0x1100000 TEST_DIR/t.IMGFMT
|
|
||||||
0x6a00000 0x400000 TEST_DIR/t.IMGFMT
|
|
||||||
No errors were found on the image.
|
No errors were found on the image.
|
||||||
*** done
|
*** done
|
||||||
|
|
119
tests/qemu-iotests/204
Executable file
119
tests/qemu-iotests/204
Executable file
|
@ -0,0 +1,119 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Test corner cases with unusual block geometries
|
||||||
|
#
|
||||||
|
# Copyright (C) 2016-2018 Red Hat, Inc.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
# creator
|
||||||
|
owner=eblake@redhat.com
|
||||||
|
|
||||||
|
seq=`basename $0`
|
||||||
|
echo "QA output created by $seq"
|
||||||
|
|
||||||
|
here=`pwd`
|
||||||
|
status=1 # failure is the default!
|
||||||
|
|
||||||
|
_cleanup()
|
||||||
|
{
|
||||||
|
_cleanup_test_img
|
||||||
|
}
|
||||||
|
trap "_cleanup; exit \$status" 0 1 2 3 15
|
||||||
|
|
||||||
|
# get standard environment, filters and checks
|
||||||
|
. ./common.rc
|
||||||
|
. ./common.filter
|
||||||
|
|
||||||
|
_supported_fmt qcow2
|
||||||
|
_supported_proto file
|
||||||
|
# This test assumes that discard leaves zero clusters; see test 177 for
|
||||||
|
# other tests that also work in older images
|
||||||
|
_unsupported_imgopts 'compat=0.10'
|
||||||
|
|
||||||
|
CLUSTER_SIZE=1M
|
||||||
|
size=128M
|
||||||
|
options=driver=blkdebug,image.driver=qcow2
|
||||||
|
nested_opts=image.file.driver=file,image.file.filename=$TEST_IMG
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "== setting up files =="
|
||||||
|
|
||||||
|
TEST_IMG="$TEST_IMG.base" _make_test_img $size
|
||||||
|
$QEMU_IO -c "write -P 11 0 $size" "$TEST_IMG.base" | _filter_qemu_io
|
||||||
|
_make_test_img -b "$TEST_IMG.base"
|
||||||
|
$QEMU_IO -c "write -P 22 0 110M" "$TEST_IMG" | _filter_qemu_io
|
||||||
|
|
||||||
|
# Limited to 64k max-transfer
|
||||||
|
echo
|
||||||
|
echo "== constrained alignment and max-transfer =="
|
||||||
|
limits=align=4k,max-transfer=64k
|
||||||
|
$QEMU_IO -c "open -o $options,$limits blkdebug::$TEST_IMG" \
|
||||||
|
-c "write -P 33 1000 128k" -c "read -P 33 1000 128k" | _filter_qemu_io
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "== write zero with constrained max-transfer =="
|
||||||
|
limits=align=512,max-transfer=64k,opt-write-zero=$CLUSTER_SIZE
|
||||||
|
$QEMU_IO -c "open -o $options,$limits blkdebug::$TEST_IMG" \
|
||||||
|
-c "write -z 8003584 2093056" | _filter_qemu_io
|
||||||
|
|
||||||
|
# non-power-of-2 write-zero/discard alignments
|
||||||
|
echo
|
||||||
|
echo "== non-power-of-2 write zeroes limits =="
|
||||||
|
|
||||||
|
limits=align=512,opt-write-zero=15M,max-write-zero=15M,opt-discard=15M,max-discard=15M
|
||||||
|
$QEMU_IO -c "open -o $options,$limits blkdebug::$TEST_IMG" \
|
||||||
|
-c "write -z 32M 32M" | _filter_qemu_io
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "== non-power-of-2 discard limits =="
|
||||||
|
|
||||||
|
limits=align=512,opt-write-zero=15M,max-write-zero=15M,opt-discard=15M,max-discard=15M
|
||||||
|
$QEMU_IO -c "open -o $options,$limits blkdebug::$TEST_IMG" \
|
||||||
|
-c "discard 80000001 30M" | _filter_qemu_io
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "== block status smaller than alignment =="
|
||||||
|
limits=align=4k
|
||||||
|
$QEMU_IO -c "open -o $options,$limits blkdebug::$TEST_IMG" \
|
||||||
|
-c "alloc 1 1" -c "alloc 0x6dffff0 1000" -c "alloc 127m 5P" \
|
||||||
|
-c map | _filter_qemu_io
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "== verify image content =="
|
||||||
|
|
||||||
|
function verify_io()
|
||||||
|
{
|
||||||
|
echo read -P 22 0 1000
|
||||||
|
echo read -P 33 1000 128k
|
||||||
|
echo read -P 22 132072 7871512
|
||||||
|
echo read -P 0 8003584 2093056
|
||||||
|
echo read -P 22 10096640 23457792
|
||||||
|
echo read -P 0 32M 32M
|
||||||
|
echo read -P 22 64M 13M
|
||||||
|
echo read -P 0 77M 29M
|
||||||
|
echo read -P 22 106M 4M
|
||||||
|
echo read -P 11 110M 18M
|
||||||
|
}
|
||||||
|
|
||||||
|
verify_io | $QEMU_IO -r "$TEST_IMG" | _filter_qemu_io
|
||||||
|
$QEMU_IMG map --image-opts "$options,$nested_opts,align=4k" \
|
||||||
|
| _filter_qemu_img_map
|
||||||
|
|
||||||
|
_check_test_img
|
||||||
|
|
||||||
|
# success, all done
|
||||||
|
echo "*** done"
|
||||||
|
status=0
|
63
tests/qemu-iotests/204.out
Normal file
63
tests/qemu-iotests/204.out
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
QA output created by 204
|
||||||
|
|
||||||
|
== setting up files ==
|
||||||
|
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
|
||||||
|
wrote 134217728/134217728 bytes at offset 0
|
||||||
|
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
|
||||||
|
wrote 115343360/115343360 bytes at offset 0
|
||||||
|
110 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
|
||||||
|
== constrained alignment and max-transfer ==
|
||||||
|
wrote 131072/131072 bytes at offset 1000
|
||||||
|
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
read 131072/131072 bytes at offset 1000
|
||||||
|
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
|
||||||
|
== write zero with constrained max-transfer ==
|
||||||
|
wrote 2093056/2093056 bytes at offset 8003584
|
||||||
|
1.996 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
|
||||||
|
== non-power-of-2 write zeroes limits ==
|
||||||
|
wrote 33554432/33554432 bytes at offset 33554432
|
||||||
|
32 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
|
||||||
|
== non-power-of-2 discard limits ==
|
||||||
|
discard 31457280/31457280 bytes at offset 80000001
|
||||||
|
30 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
|
||||||
|
== block status smaller than alignment ==
|
||||||
|
1/1 bytes allocated at offset 1 bytes
|
||||||
|
16/1000 bytes allocated at offset 110 MiB
|
||||||
|
0/1048576 bytes allocated at offset 127 MiB
|
||||||
|
110 MiB (0x6e00000) bytes allocated at offset 0 bytes (0x0)
|
||||||
|
18 MiB (0x1200000) bytes not allocated at offset 110 MiB (0x6e00000)
|
||||||
|
|
||||||
|
== verify image content ==
|
||||||
|
read 1000/1000 bytes at offset 0
|
||||||
|
1000 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
read 131072/131072 bytes at offset 1000
|
||||||
|
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
read 7871512/7871512 bytes at offset 132072
|
||||||
|
7.507 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
read 2093056/2093056 bytes at offset 8003584
|
||||||
|
1.996 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
read 23457792/23457792 bytes at offset 10096640
|
||||||
|
22.371 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
read 33554432/33554432 bytes at offset 33554432
|
||||||
|
32 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
read 13631488/13631488 bytes at offset 67108864
|
||||||
|
13 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
read 30408704/30408704 bytes at offset 80740352
|
||||||
|
29 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
read 4194304/4194304 bytes at offset 111149056
|
||||||
|
4 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
read 18874368/18874368 bytes at offset 115343360
|
||||||
|
18 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||||
|
Offset Length File
|
||||||
|
0 0x800000 TEST_DIR/t.IMGFMT
|
||||||
|
0x900000 0x2400000 TEST_DIR/t.IMGFMT
|
||||||
|
0x3c00000 0x1100000 TEST_DIR/t.IMGFMT
|
||||||
|
0x6a00000 0x400000 TEST_DIR/t.IMGFMT
|
||||||
|
No errors were found on the image.
|
||||||
|
*** done
|
|
@ -200,3 +200,4 @@
|
||||||
201 rw auto migration
|
201 rw auto migration
|
||||||
202 rw auto quick
|
202 rw auto quick
|
||||||
203 rw auto
|
203 rw auto
|
||||||
|
204 rw auto quick
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue