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:
Kevin Wolf 2015-01-23 18:51:47 +01:00
commit bc63781ca3
3 changed files with 59 additions and 7 deletions

View File

@ -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;

View File

@ -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

View File

@ -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