Merge remote-tracking branch 'mreitz/block' into queue-block
* mreitz/block: iotests: Lower 064's memory usage block: vhdx - force FileOffsetMB field to '0' for certain block states
This commit is contained in:
commit
bc63781ca3
13
block/vhdx.c
13
block/vhdx.c
@ -1174,7 +1174,18 @@ static void vhdx_update_bat_table_entry(BlockDriverState *bs, BDRVVHDXState *s,
|
||||
{
|
||||
/* The BAT entry is a uint64, with 44 bits for the file offset in units of
|
||||
* 1MB, and 3 bits for the block state. */
|
||||
s->bat[sinfo->bat_idx] = sinfo->file_offset;
|
||||
if ((state == PAYLOAD_BLOCK_ZERO) ||
|
||||
(state == PAYLOAD_BLOCK_UNDEFINED) ||
|
||||
(state == PAYLOAD_BLOCK_NOT_PRESENT) ||
|
||||
(state == PAYLOAD_BLOCK_UNMAPPED)) {
|
||||
s->bat[sinfo->bat_idx] = 0; /* For PAYLOAD_BLOCK_ZERO, the
|
||||
FileOffsetMB field is denoted as
|
||||
'reserved' in the v1.0 spec. If it is
|
||||
non-zero, MS Hyper-V will fail to read
|
||||
the disk image */
|
||||
} else {
|
||||
s->bat[sinfo->bat_idx] = sinfo->file_offset;
|
||||
}
|
||||
|
||||
s->bat[sinfo->bat_idx] |= state & VHDX_BAT_STATE_BIT_MASK;
|
||||
|
||||
|
@ -54,7 +54,15 @@ $QEMU_IO -r -c "read -pP 0x96 33M 33M" "$TEST_IMG" | _filter_qemu_io
|
||||
|
||||
echo
|
||||
echo "=== Verify pattern 0x00, 66M - 1024M ==="
|
||||
$QEMU_IO -r -c "read -pP 0x00 66M 958M" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -r -c "read -pP 0x00 66M 62M" \
|
||||
-c "read -pP 0x00 128M 128M" \
|
||||
-c "read -pP 0x00 256M 128M" \
|
||||
-c "read -pP 0x00 384M 128M" \
|
||||
-c "read -pP 0x00 512M 128M" \
|
||||
-c "read -pP 0x00 640M 128M" \
|
||||
-c "read -pP 0x00 768M 128M" \
|
||||
-c "read -pP 0x00 896M 128M" \
|
||||
"$TEST_IMG" | _filter_qemu_io
|
||||
|
||||
echo
|
||||
echo "=== Verify pattern write, 0xc3 99M-157M ==="
|
||||
@ -63,7 +71,14 @@ $QEMU_IO -c "write -pP 0xc3 99M 58M" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c "read -pP 0xa5 0 33M" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c "read -pP 0x96 33M 33M" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c "read -pP 0x00 66M 33M" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c "read -pP 0x00 157MM 867MM" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c "read -pP 0x00 157M 99M" \
|
||||
-c "read -pP 0x00 256M 128M" \
|
||||
-c "read -pP 0x00 384M 128M" \
|
||||
-c "read -pP 0x00 512M 128M" \
|
||||
-c "read -pP 0x00 640M 128M" \
|
||||
-c "read -pP 0x00 768M 128M" \
|
||||
-c "read -pP 0x00 896M 128M" \
|
||||
"$TEST_IMG" | _filter_qemu_io
|
||||
# now verify what we should have actually written
|
||||
$QEMU_IO -c "read -pP 0xc3 99M 58M" "$TEST_IMG" | _filter_qemu_io
|
||||
|
||||
|
@ -9,8 +9,22 @@ read 34603008/34603008 bytes at offset 34603008
|
||||
33 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
=== Verify pattern 0x00, 66M - 1024M ===
|
||||
read 1004535808/1004535808 bytes at offset 69206016
|
||||
958 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
read 65011712/65011712 bytes at offset 69206016
|
||||
62 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
read 134217728/134217728 bytes at offset 134217728
|
||||
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
read 134217728/134217728 bytes at offset 268435456
|
||||
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
read 134217728/134217728 bytes at offset 402653184
|
||||
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
read 134217728/134217728 bytes at offset 536870912
|
||||
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
read 134217728/134217728 bytes at offset 671088640
|
||||
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
read 134217728/134217728 bytes at offset 805306368
|
||||
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
read 134217728/134217728 bytes at offset 939524096
|
||||
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
=== Verify pattern write, 0xc3 99M-157M ===
|
||||
wrote 60817408/60817408 bytes at offset 103809024
|
||||
@ -21,8 +35,20 @@ read 34603008/34603008 bytes at offset 34603008
|
||||
33 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
read 34603008/34603008 bytes at offset 69206016
|
||||
33 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
read 909115392/909115392 bytes at offset 164626432
|
||||
867 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
read 103809024/103809024 bytes at offset 164626432
|
||||
99 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
read 134217728/134217728 bytes at offset 268435456
|
||||
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
read 134217728/134217728 bytes at offset 402653184
|
||||
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
read 134217728/134217728 bytes at offset 536870912
|
||||
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
read 134217728/134217728 bytes at offset 671088640
|
||||
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
read 134217728/134217728 bytes at offset 805306368
|
||||
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
read 134217728/134217728 bytes at offset 939524096
|
||||
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
read 60817408/60817408 bytes at offset 103809024
|
||||
58 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
*** done
|
||||
|
Loading…
Reference in New Issue
Block a user