On 06/28/2018 01:00 PM, John Snow wrote:
Signed-off-by: John Snow <js...@redhat.com> --- tests/qemu-iotests/222 | 149 +++++++++++++++++++++++++++++++++++++++++++++ tests/qemu-iotests/222.out | 60 ++++++++++++++++++ tests/qemu-iotests/group | 1 + 3 files changed, 210 insertions(+) create mode 100644 tests/qemu-iotests/222 create mode 100644 tests/qemu-iotests/222.out
+iotests.verify_platform(['linux']) + +patterns = [("0x5d", "0", "64k"), + ("0xd5", "1M", "64k"), + ("0xdc", "32M", "64k"), + ("0xcd", "0x3ff0000", "64k")] # 64M - 64K + +overwrite = [("0xab", "0", "64k"), # Full overwrite + ("0xad", "0x00f8000", "64k"), # Partial-left (1M-32K) + ("0x1d", "0x2008000", "64k"), # Partial-right (32M+32K) + ("0xea", "0x3fe0000", "64k")] # Adjacent-left (64M - 128K) + +remainder = [("0xd5", "0x108000", "32K"), # Right-end of partial-left [1] + ("0xdc", "32M", "32k"), # Left-end of partial-right [2] + ("0xcd", "0x3ff0000", "64k")] # patterns[3]
What if you also add: zeroes = [("0x00", "0x108000", "32K"), # Right-end of partial-left [1] ("0x00", "32M", "32k"), # Left-end of partial-right [2] ("0x00", "0x3ff0000", "64k")] # patterns[3] then...
+ log('') + log('--- Sanity Check ---') + log('') + + for p in patterns:
for p in (patterns + zeroes)
+ cmd = "read -P%s %s %s" % p + log(cmd) + assert qemu_io_silent('-r', '-f', 'raw', '-c', cmd, nbd_uri) == 0 + + log('') + log('--- Testing COW ---') + log('') + + for p in overwrite: + cmd = "write -P%s %s %s" % p + log(cmd) + log(vm.hmp_qemu_io(srcNode, cmd)) + + log('') + log('--- Verifying Data ---') + log('') + + for p in patterns:
for p in (patterns + zeroes)
+ cmd = "read -P%s %s %s" % p + log(cmd) + assert qemu_io_silent('-r', '-f', 'raw', '-c', cmd, nbd_uri) == 0 + + log('') + log('--- Cleanup ---') + log('') + + #log(vm.hmp_qemu_io(srcNode, 'flush')) + log(vm.qmp('block-job-cancel', device=srcNode)) + log(vm.qmp('nbd-server-stop')) + log(vm.qmp('blockdev-del', node_name=tgtNode)) + vm.shutdown() + + log('') + log('--- Confirming writes ---') + log('') + + for p in (overwrite + remainder):
so that reads of both the fleeced point in time and of the final image cover the same set of byte ranges.
-- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org