Previously, the alloc command required that input parameters be sector-aligned and clamped to 32 bits, because the underlying bdrv_is_allocated used a 32-bit parameter and asserted aligned inputs. But now that we have fixed block status to report a 64-bit bytes value, and to properly round requests on behalf of guests, we can pass any values, and can use qemu-io to add coverage that our rounding is correct regardless of the guest alignment constraints. Update iotest 177 to intentionally probe block status at unaligned boundaries as well as with a bytes value that does not map to 32-bit sectors, which also required tweaking the image prep to leave an unallocated portion to the image under test. Signed-off-by: Eric Blake <eblake@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
64 lines
2.7 KiB
Plaintext
64 lines
2.7 KiB
Plaintext
QA output created by 177
|
|
|
|
== 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
|