tests: qemublock: Add test case for detecting bitmaps as we create snapshots

Add test data gathered from a run of qemu after creating bitmaps and
snapshots together in various combinations.

The following sequence of commands was used to achieve the
configuration:

virsh checkpoint-create-as VM --name a
virsh snapshot-create-as VM --disk-only
virsh snapshot-create-as VM --disk-only
virsh checkpoint-create-as VM --name b
virsh checkpoint-create-as VM --name c
virsh snapshot-create-as VM --disk-only
virsh checkpoint-create-as VM --name d
virsh snapshot-create-as VM --disk-only
virsh checkpoint-create-as VM --name current

Note that VM was restarted after these operations to allow renumbering
of the bitmaps in a more human-readable way.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
Peter Krempa 2019-12-12 13:50:55 +01:00
parent 3283445212
commit 0b27b655b1
3 changed files with 851 additions and 0 deletions

View File

@ -777,6 +777,7 @@ mymain(void)
TEST_BITMAP_DETECT("basic");
TEST_BITMAP_DETECT("synthetic");
TEST_BITMAP_DETECT("snapshots");
cleanup:
virHashFree(diskxmljsondata.schema);

View File

@ -0,0 +1,836 @@
[
{
"iops_rd": 0,
"detect_zeroes": "off",
"image": {
"backing-image": {
"backing-image": {
"backing-image": {
"backing-image": {
"virtual-size": 10485760,
"filename": "/tmp/pull4.qcow2",
"cluster-size": 65536,
"format": "qcow2",
"actual-size": 208896,
"format-specific": {
"type": "qcow2",
"data": {
"compat": "1.1",
"lazy-refcounts": false,
"bitmaps": [
{
"flags": [
"auto"
],
"name": "a",
"granularity": 65536
}
],
"refcount-bits": 16,
"corrupt": false
}
},
"dirty-flag": false
},
"backing-filename-format": "qcow2",
"virtual-size": 10485760,
"filename": "/tmp/pull4.1575911522",
"cluster-size": 65536,
"format": "qcow2",
"actual-size": 208896,
"format-specific": {
"type": "qcow2",
"data": {
"compat": "1.1",
"lazy-refcounts": false,
"bitmaps": [
{
"flags": [
"auto"
],
"name": "a",
"granularity": 65536
}
],
"refcount-bits": 16,
"corrupt": false
}
},
"full-backing-filename": "/tmp/pull4.qcow2",
"backing-filename": "/tmp/pull4.qcow2",
"dirty-flag": false
},
"backing-filename-format": "qcow2",
"virtual-size": 10485760,
"filename": "/tmp/pull4.1575911527",
"cluster-size": 65536,
"format": "qcow2",
"actual-size": 217088,
"format-specific": {
"type": "qcow2",
"data": {
"compat": "1.1",
"lazy-refcounts": false,
"bitmaps": [
{
"flags": [
"auto"
],
"name": "c",
"granularity": 65536
},
{
"flags": [
],
"name": "b",
"granularity": 65536
},
{
"flags": [
],
"name": "a",
"granularity": 65536
}
],
"refcount-bits": 16,
"corrupt": false
}
},
"full-backing-filename": "/tmp/pull4.1575911522",
"backing-filename": "/tmp/pull4.1575911522",
"dirty-flag": false
},
"backing-filename-format": "qcow2",
"virtual-size": 10485760,
"filename": "/tmp/pull4.1575911540",
"cluster-size": 65536,
"format": "qcow2",
"actual-size": 212992,
"format-specific": {
"type": "qcow2",
"data": {
"compat": "1.1",
"lazy-refcounts": false,
"bitmaps": [
{
"flags": [
"auto"
],
"name": "d",
"granularity": 65536
},
{
"flags": [
],
"name": "c",
"granularity": 65536
}
],
"refcount-bits": 16,
"corrupt": false
}
},
"full-backing-filename": "/tmp/pull4.1575911527",
"backing-filename": "/tmp/pull4.1575911527",
"dirty-flag": false
},
"backing-filename-format": "qcow2",
"virtual-size": 10485760,
"filename": "/tmp/pull4.1575911550",
"cluster-size": 65536,
"format": "qcow2",
"actual-size": 212992,
"format-specific": {
"type": "qcow2",
"data": {
"compat": "1.1",
"lazy-refcounts": false,
"bitmaps": [
{
"flags": [
"in-use",
"auto"
],
"name": "current",
"granularity": 65536
},
{
"flags": [
"in-use"
],
"name": "d",
"granularity": 65536
}
],
"refcount-bits": 16,
"corrupt": false
}
},
"full-backing-filename": "/tmp/pull4.1575911540",
"backing-filename": "/tmp/pull4.1575911540",
"dirty-flag": false
},
"iops_wr": 0,
"ro": false,
"node-name": "libvirt-1-format",
"backing_file_depth": 4,
"drv": "qcow2",
"iops": 0,
"bps_wr": 0,
"write_threshold": 0,
"backing_file": "/tmp/pull4.1575911540",
"dirty-bitmaps": [
{
"name": "d",
"recording": false,
"persistent": true,
"busy": false,
"status": "disabled",
"granularity": 65536,
"count": 0
},
{
"name": "current",
"recording": true,
"persistent": true,
"busy": false,
"status": "active",
"granularity": 65536,
"count": 0
}
],
"encrypted": false,
"bps": 0,
"bps_rd": 0,
"cache": {
"no-flush": false,
"direct": false,
"writeback": true
},
"file": "/tmp/pull4.1575911550",
"encryption_key_missing": false
},
{
"iops_rd": 0,
"detect_zeroes": "off",
"image": {
"virtual-size": 393728,
"filename": "/tmp/pull4.1575911550",
"format": "file",
"actual-size": 212992,
"dirty-flag": false
},
"iops_wr": 0,
"ro": false,
"node-name": "libvirt-1-storage",
"backing_file_depth": 0,
"drv": "file",
"iops": 0,
"bps_wr": 0,
"write_threshold": 0,
"encrypted": false,
"bps": 0,
"bps_rd": 0,
"cache": {
"no-flush": false,
"direct": false,
"writeback": true
},
"file": "/tmp/pull4.1575911550",
"encryption_key_missing": false
},
{
"iops_rd": 0,
"detect_zeroes": "off",
"image": {
"backing-image": {
"backing-image": {
"backing-image": {
"virtual-size": 10485760,
"filename": "/tmp/pull4.qcow2",
"cluster-size": 65536,
"format": "qcow2",
"actual-size": 208896,
"format-specific": {
"type": "qcow2",
"data": {
"compat": "1.1",
"lazy-refcounts": false,
"bitmaps": [
{
"flags": [
"auto"
],
"name": "a",
"granularity": 65536
}
],
"refcount-bits": 16,
"corrupt": false
}
},
"dirty-flag": false
},
"backing-filename-format": "qcow2",
"virtual-size": 10485760,
"filename": "/tmp/pull4.1575911522",
"cluster-size": 65536,
"format": "qcow2",
"actual-size": 208896,
"format-specific": {
"type": "qcow2",
"data": {
"compat": "1.1",
"lazy-refcounts": false,
"bitmaps": [
{
"flags": [
"auto"
],
"name": "a",
"granularity": 65536
}
],
"refcount-bits": 16,
"corrupt": false
}
},
"full-backing-filename": "/tmp/pull4.qcow2",
"backing-filename": "/tmp/pull4.qcow2",
"dirty-flag": false
},
"backing-filename-format": "qcow2",
"virtual-size": 10485760,
"filename": "/tmp/pull4.1575911527",
"cluster-size": 65536,
"format": "qcow2",
"actual-size": 217088,
"format-specific": {
"type": "qcow2",
"data": {
"compat": "1.1",
"lazy-refcounts": false,
"bitmaps": [
{
"flags": [
"auto"
],
"name": "c",
"granularity": 65536
},
{
"flags": [
],
"name": "b",
"granularity": 65536
},
{
"flags": [
],
"name": "a",
"granularity": 65536
}
],
"refcount-bits": 16,
"corrupt": false
}
},
"full-backing-filename": "/tmp/pull4.1575911522",
"backing-filename": "/tmp/pull4.1575911522",
"dirty-flag": false
},
"backing-filename-format": "qcow2",
"virtual-size": 10485760,
"filename": "/tmp/pull4.1575911540",
"cluster-size": 65536,
"format": "qcow2",
"actual-size": 212992,
"format-specific": {
"type": "qcow2",
"data": {
"compat": "1.1",
"lazy-refcounts": false,
"bitmaps": [
{
"flags": [
"auto"
],
"name": "d",
"granularity": 65536
},
{
"flags": [
],
"name": "c",
"granularity": 65536
}
],
"refcount-bits": 16,
"corrupt": false
}
},
"full-backing-filename": "/tmp/pull4.1575911527",
"backing-filename": "/tmp/pull4.1575911527",
"dirty-flag": false
},
"iops_wr": 0,
"ro": true,
"node-name": "libvirt-2-format",
"backing_file_depth": 3,
"drv": "qcow2",
"iops": 0,
"bps_wr": 0,
"write_threshold": 0,
"backing_file": "/tmp/pull4.1575911527",
"dirty-bitmaps": [
{
"name": "c",
"recording": false,
"persistent": true,
"busy": false,
"status": "disabled",
"granularity": 65536,
"count": 0
},
{
"name": "d",
"recording": true,
"persistent": true,
"busy": false,
"status": "active",
"granularity": 65536,
"count": 0
}
],
"encrypted": false,
"bps": 0,
"bps_rd": 0,
"cache": {
"no-flush": false,
"direct": false,
"writeback": true
},
"file": "/tmp/pull4.1575911540",
"encryption_key_missing": false
},
{
"iops_rd": 0,
"detect_zeroes": "off",
"image": {
"virtual-size": 393728,
"filename": "/tmp/pull4.1575911540",
"format": "file",
"actual-size": 212992,
"dirty-flag": false
},
"iops_wr": 0,
"ro": false,
"node-name": "libvirt-2-storage",
"backing_file_depth": 0,
"drv": "file",
"iops": 0,
"bps_wr": 0,
"write_threshold": 0,
"encrypted": false,
"bps": 0,
"bps_rd": 0,
"cache": {
"no-flush": false,
"direct": false,
"writeback": true
},
"file": "/tmp/pull4.1575911540",
"encryption_key_missing": false
},
{
"iops_rd": 0,
"detect_zeroes": "off",
"image": {
"backing-image": {
"backing-image": {
"virtual-size": 10485760,
"filename": "/tmp/pull4.qcow2",
"cluster-size": 65536,
"format": "qcow2",
"actual-size": 208896,
"format-specific": {
"type": "qcow2",
"data": {
"compat": "1.1",
"lazy-refcounts": false,
"bitmaps": [
{
"flags": [
"auto"
],
"name": "a",
"granularity": 65536
}
],
"refcount-bits": 16,
"corrupt": false
}
},
"dirty-flag": false
},
"backing-filename-format": "qcow2",
"virtual-size": 10485760,
"filename": "/tmp/pull4.1575911522",
"cluster-size": 65536,
"format": "qcow2",
"actual-size": 208896,
"format-specific": {
"type": "qcow2",
"data": {
"compat": "1.1",
"lazy-refcounts": false,
"bitmaps": [
{
"flags": [
"auto"
],
"name": "a",
"granularity": 65536
}
],
"refcount-bits": 16,
"corrupt": false
}
},
"full-backing-filename": "/tmp/pull4.qcow2",
"backing-filename": "/tmp/pull4.qcow2",
"dirty-flag": false
},
"backing-filename-format": "qcow2",
"virtual-size": 10485760,
"filename": "/tmp/pull4.1575911527",
"cluster-size": 65536,
"format": "qcow2",
"actual-size": 217088,
"format-specific": {
"type": "qcow2",
"data": {
"compat": "1.1",
"lazy-refcounts": false,
"bitmaps": [
{
"flags": [
"auto"
],
"name": "c",
"granularity": 65536
},
{
"flags": [
],
"name": "b",
"granularity": 65536
},
{
"flags": [
],
"name": "a",
"granularity": 65536
}
],
"refcount-bits": 16,
"corrupt": false
}
},
"full-backing-filename": "/tmp/pull4.1575911522",
"backing-filename": "/tmp/pull4.1575911522",
"dirty-flag": false
},
"iops_wr": 0,
"ro": true,
"node-name": "libvirt-3-format",
"backing_file_depth": 2,
"drv": "qcow2",
"iops": 0,
"bps_wr": 0,
"write_threshold": 0,
"backing_file": "/tmp/pull4.1575911522",
"dirty-bitmaps": [
{
"name": "a",
"recording": false,
"persistent": true,
"busy": false,
"status": "disabled",
"granularity": 65536,
"count": 0
},
{
"name": "b",
"recording": false,
"persistent": true,
"busy": false,
"status": "disabled",
"granularity": 65536,
"count": 0
},
{
"name": "c",
"recording": true,
"persistent": true,
"busy": false,
"status": "active",
"granularity": 65536,
"count": 0
}
],
"encrypted": false,
"bps": 0,
"bps_rd": 0,
"cache": {
"no-flush": false,
"direct": false,
"writeback": true
},
"file": "/tmp/pull4.1575911527",
"encryption_key_missing": false
},
{
"iops_rd": 0,
"detect_zeroes": "off",
"image": {
"virtual-size": 459264,
"filename": "/tmp/pull4.1575911527",
"format": "file",
"actual-size": 217088,
"dirty-flag": false
},
"iops_wr": 0,
"ro": false,
"node-name": "libvirt-3-storage",
"backing_file_depth": 0,
"drv": "file",
"iops": 0,
"bps_wr": 0,
"write_threshold": 0,
"encrypted": false,
"bps": 0,
"bps_rd": 0,
"cache": {
"no-flush": false,
"direct": false,
"writeback": true
},
"file": "/tmp/pull4.1575911527",
"encryption_key_missing": false
},
{
"iops_rd": 0,
"detect_zeroes": "off",
"image": {
"backing-image": {
"virtual-size": 10485760,
"filename": "/tmp/pull4.qcow2",
"cluster-size": 65536,
"format": "qcow2",
"actual-size": 208896,
"format-specific": {
"type": "qcow2",
"data": {
"compat": "1.1",
"lazy-refcounts": false,
"bitmaps": [
{
"flags": [
"auto"
],
"name": "a",
"granularity": 65536
}
],
"refcount-bits": 16,
"corrupt": false
}
},
"dirty-flag": false
},
"backing-filename-format": "qcow2",
"virtual-size": 10485760,
"filename": "/tmp/pull4.1575911522",
"cluster-size": 65536,
"format": "qcow2",
"actual-size": 208896,
"format-specific": {
"type": "qcow2",
"data": {
"compat": "1.1",
"lazy-refcounts": false,
"bitmaps": [
{
"flags": [
"auto"
],
"name": "a",
"granularity": 65536
}
],
"refcount-bits": 16,
"corrupt": false
}
},
"full-backing-filename": "/tmp/pull4.qcow2",
"backing-filename": "/tmp/pull4.qcow2",
"dirty-flag": false
},
"iops_wr": 0,
"ro": true,
"node-name": "libvirt-4-format",
"backing_file_depth": 1,
"drv": "qcow2",
"iops": 0,
"bps_wr": 0,
"write_threshold": 0,
"backing_file": "/tmp/pull4.qcow2",
"dirty-bitmaps": [
{
"name": "a",
"recording": true,
"persistent": true,
"busy": false,
"status": "active",
"granularity": 65536,
"count": 0
}
],
"encrypted": false,
"bps": 0,
"bps_rd": 0,
"cache": {
"no-flush": false,
"direct": false,
"writeback": true
},
"file": "/tmp/pull4.1575911522",
"encryption_key_missing": false
},
{
"iops_rd": 0,
"detect_zeroes": "off",
"image": {
"virtual-size": 328192,
"filename": "/tmp/pull4.1575911522",
"format": "file",
"actual-size": 208896,
"dirty-flag": false
},
"iops_wr": 0,
"ro": false,
"node-name": "libvirt-4-storage",
"backing_file_depth": 0,
"drv": "file",
"iops": 0,
"bps_wr": 0,
"write_threshold": 0,
"encrypted": false,
"bps": 0,
"bps_rd": 0,
"cache": {
"no-flush": false,
"direct": false,
"writeback": true
},
"file": "/tmp/pull4.1575911522",
"encryption_key_missing": false
},
{
"iops_rd": 0,
"detect_zeroes": "off",
"image": {
"virtual-size": 10485760,
"filename": "/tmp/pull4.qcow2",
"cluster-size": 65536,
"format": "qcow2",
"actual-size": 208896,
"format-specific": {
"type": "qcow2",
"data": {
"compat": "1.1",
"lazy-refcounts": false,
"bitmaps": [
{
"flags": [
"auto"
],
"name": "a",
"granularity": 65536
}
],
"refcount-bits": 16,
"corrupt": false
}
},
"dirty-flag": false
},
"iops_wr": 0,
"ro": true,
"node-name": "libvirt-5-format",
"backing_file_depth": 0,
"drv": "qcow2",
"iops": 0,
"bps_wr": 0,
"write_threshold": 0,
"dirty-bitmaps": [
{
"name": "a",
"recording": true,
"persistent": true,
"busy": false,
"status": "active",
"granularity": 65536,
"count": 0
}
],
"encrypted": false,
"bps": 0,
"bps_rd": 0,
"cache": {
"no-flush": false,
"direct": false,
"writeback": true
},
"file": "/tmp/pull4.qcow2",
"encryption_key_missing": false
},
{
"iops_rd": 0,
"detect_zeroes": "off",
"image": {
"virtual-size": 328192,
"filename": "/tmp/pull4.qcow2",
"format": "file",
"actual-size": 208896,
"dirty-flag": false
},
"iops_wr": 0,
"ro": false,
"node-name": "libvirt-5-storage",
"backing_file_depth": 0,
"drv": "file",
"iops": 0,
"bps_wr": 0,
"write_threshold": 0,
"encrypted": false,
"bps": 0,
"bps_rd": 0,
"cache": {
"no-flush": false,
"direct": false,
"writeback": true
},
"file": "/tmp/pull4.qcow2",
"encryption_key_missing": false
}
]

View File

@ -0,0 +1,14 @@
libvirt-1-format:
d: record:0 busy:0 persist:1 inconsist:0 gran:65536 dirty:0
current: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0
libvirt-2-format:
c: record:0 busy:0 persist:1 inconsist:0 gran:65536 dirty:0
d: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0
libvirt-3-format:
a: record:0 busy:0 persist:1 inconsist:0 gran:65536 dirty:0
b: record:0 busy:0 persist:1 inconsist:0 gran:65536 dirty:0
c: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0
libvirt-4-format:
a: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0
libvirt-5-format:
a: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0