Use test data which conforms to the new semantics which changed in the
previous patch.
The test data was created by the same set of commands as originally in
commit 0b27b655b1bac480186ce80457113cd5dc34e6a1
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
---
tests/qemublocktestdata/bitmap/snapshots.json | 1382 +++++++----------
tests/qemublocktestdata/bitmap/snapshots.out | 13 +-
2 files changed, 588 insertions(+), 807 deletions(-)
diff --git a/tests/qemublocktestdata/bitmap/snapshots.json b/tests/qemublocktestdata/bitmap/snapshots.json
index 87e77ad408..2a20aea812 100644
--- a/tests/qemublocktestdata/bitmap/snapshots.json
+++ b/tests/qemublocktestdata/bitmap/snapshots.json
@@ -1,836 +1,612 @@
[
- {
- "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
+ {
+ "iops_rd": 0,
+ "detect_zeroes": "off",
+ "image": {
+ "backing-filename-format": "qcow2",
+ "virtual-size": 104857600,
+ "filename": "/tmp/bitmaps.1591792950",
+ "cluster-size": 65536,
+ "format": "qcow2",
+ "actual-size": 225280,
+ "format-specific": {
+ "type": "qcow2",
+ "data": {
+ "compat": "1.1",
+ "compression-type": "zlib",
+ "lazy-refcounts": false,
+ "bitmaps": [
+ {
+ "flags": [
+ "in-use",
+ "auto"
+ ],
+ "name": "current",
+ "granularity": 65536
+ },
+ {
+ "flags": [
+ "in-use",
+ "auto"
+ ],
+ "name": "c",
+ "granularity": 65536
},
- "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
- }
+ {
+ "flags": [
+ "in-use",
+ "auto"
+ ],
+ "name": "b",
+ "granularity": 65536
},
- "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
+ "flags": [
+ "in-use",
+ "auto"
+ ],
+ "name": "a",
+ "granularity": 65536
},
{
- "name": "current",
- "recording": true,
- "persistent": true,
- "busy": false,
- "status": "active",
- "granularity": 65536,
- "count": 0
+ "flags": [
+ "in-use",
+ "auto"
+ ],
+ "name": "d",
+ "granularity": 65536
}
- ],
- "encrypted": false,
- "bps": 0,
- "bps_rd": 0,
- "cache": {
- "no-flush": false,
- "direct": false,
- "writeback": true
- },
- "file": "/tmp/pull4.1575911550",
- "encryption_key_missing": false
+ ],
+ "refcount-bits": 16,
+ "corrupt": false
+ }
+ },
+ "full-backing-filename": "/tmp/bitmaps.1591792938",
+ "backing-filename": "/tmp/bitmaps.1591792938",
+ "dirty-flag": false
+ },
+ "iops_wr": 0,
+ "ro": false,
+ "node-name": "libvirt-1-format",
+ "backing_file_depth": 0,
+ "drv": "qcow2",
+ "iops": 0,
+ "bps_wr": 0,
+ "write_threshold": 0,
+ "backing_file": "/tmp/bitmaps.1591792938",
+ "dirty-bitmaps": [
+ {
+ "name": "d",
+ "recording": true,
+ "persistent": true,
+ "busy": false,
+ "status": "active",
+ "granularity": 65536,
+ "count": 0
+ },
+ {
+ "name": "a",
+ "recording": true,
+ "persistent": true,
+ "busy": false,
+ "status": "active",
+ "granularity": 65536,
+ "count": 0
+ },
+ {
+ "name": "b",
+ "recording": true,
+ "persistent": true,
+ "busy": false,
+ "status": "active",
+ "granularity": 65536,
+ "count": 0
+ },
+ {
+ "name": "c",
+ "recording": true,
+ "persistent": true,
+ "busy": false,
+ "status": "active",
+ "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/bitmaps.1591792950",
+ "encryption_key_missing": false
+ },
+ {
+ "iops_rd": 0,
+ "detect_zeroes": "off",
+ "image": {
+ "virtual-size": 590336,
+ "filename": "/tmp/bitmaps.1591792950",
+ "format": "file",
+ "actual-size": 225280,
+ "dirty-flag": 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_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
},
- {
- "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
+ "file": "/tmp/bitmaps.1591792950",
+ "encryption_key_missing": false
+ },
+ {
+ "iops_rd": 0,
+ "detect_zeroes": "off",
+ "image": {
+ "backing-filename-format": "qcow2",
+ "virtual-size": 104857600,
+ "filename": "/tmp/bitmaps.1591792938",
+ "cluster-size": 65536,
+ "format": "qcow2",
+ "actual-size": 221184,
+ "format-specific": {
+ "type": "qcow2",
+ "data": {
+ "compat": "1.1",
+ "compression-type": "zlib",
+ "lazy-refcounts": false,
+ "bitmaps": [
+ {
+ "flags": [
+ "auto"
+ ],
+ "name": "d",
+ "granularity": 65536
},
- "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
- }
+ {
+ "flags": [
+ "auto"
+ ],
+ "name": "a",
+ "granularity": 65536
},
- "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
+ "flags": [
+ "auto"
+ ],
+ "name": "b",
+ "granularity": 65536
},
{
- "name": "d",
- "recording": true,
- "persistent": true,
- "busy": false,
- "status": "active",
- "granularity": 65536,
- "count": 0
+ "flags": [
+ "auto"
+ ],
+ "name": "c",
+ "granularity": 65536
}
- ],
- "encrypted": false,
- "bps": 0,
- "bps_rd": 0,
- "cache": {
- "no-flush": false,
- "direct": false,
- "writeback": true
- },
- "file": "/tmp/pull4.1575911540",
- "encryption_key_missing": false
+ ],
+ "refcount-bits": 16,
+ "corrupt": false
+ }
+ },
+ "full-backing-filename": "/tmp/bitmaps.1591792930",
+ "backing-filename": "/tmp/bitmaps.1591792930",
+ "dirty-flag": 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_wr": 0,
+ "ro": true,
+ "node-name": "libvirt-2-format",
+ "backing_file_depth": 0,
+ "drv": "qcow2",
+ "iops": 0,
+ "bps_wr": 0,
+ "write_threshold": 0,
+ "backing_file": "/tmp/bitmaps.1591792930",
+ "dirty-bitmaps": [
+ {
+ "name": "c",
+ "recording": true,
+ "persistent": true,
+ "busy": false,
+ "status": "active",
+ "granularity": 65536,
+ "count": 0
+ },
+ {
+ "name": "b",
+ "recording": true,
+ "persistent": true,
+ "busy": false,
+ "status": "active",
+ "granularity": 65536,
+ "count": 0
+ },
+ {
+ "name": "a",
+ "recording": true,
+ "persistent": true,
+ "busy": false,
+ "status": "active",
+ "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
},
- {
- "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": [
+ "file": "/tmp/bitmaps.1591792938",
+ "encryption_key_missing": false
+ },
+ {
+ "iops_rd": 0,
+ "detect_zeroes": "off",
+ "image": {
+ "virtual-size": 524800,
+ "filename": "/tmp/bitmaps.1591792938",
+ "format": "file",
+ "actual-size": 221184,
+ "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/bitmaps.1591792938",
+ "encryption_key_missing": false
+ },
+ {
+ "iops_rd": 0,
+ "detect_zeroes": "off",
+ "image": {
+ "backing-filename-format": "qcow2",
+ "virtual-size": 104857600,
+ "filename": "/tmp/bitmaps.1591792930",
+ "cluster-size": 65536,
+ "format": "qcow2",
+ "actual-size": 217088,
+ "format-specific": {
+ "type": "qcow2",
+ "data": {
+ "compat": "1.1",
+ "compression-type": "zlib",
+ "lazy-refcounts": false,
+ "bitmaps": [
{
- "name": "a",
- "recording": false,
- "persistent": true,
- "busy": false,
- "status": "disabled",
- "granularity": 65536,
- "count": 0
+ "flags": [
+ "auto"
+ ],
+ "name": "c",
+ "granularity": 65536
},
{
- "name": "b",
- "recording": false,
- "persistent": true,
- "busy": false,
- "status": "disabled",
- "granularity": 65536,
- "count": 0
+ "flags": [
+ "auto"
+ ],
+ "name": "b",
+ "granularity": 65536
},
{
- "name": "c",
- "recording": true,
- "persistent": true,
- "busy": false,
- "status": "active",
- "granularity": 65536,
- "count": 0
+ "flags": [
+ "auto"
+ ],
+ "name": "a",
+ "granularity": 65536
}
- ],
- "encrypted": false,
- "bps": 0,
- "bps_rd": 0,
- "cache": {
- "no-flush": false,
- "direct": false,
- "writeback": true
- },
- "file": "/tmp/pull4.1575911527",
- "encryption_key_missing": false
+ ],
+ "refcount-bits": 16,
+ "corrupt": false
+ }
+ },
+ "full-backing-filename": "/tmp/bitmaps.1591792925",
+ "backing-filename": "/tmp/bitmaps.1591792925",
+ "dirty-flag": 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_wr": 0,
+ "ro": true,
+ "node-name": "libvirt-3-format",
+ "backing_file_depth": 0,
+ "drv": "qcow2",
+ "iops": 0,
+ "bps_wr": 0,
+ "write_threshold": 0,
+ "backing_file": "/tmp/bitmaps.1591792925",
+ "dirty-bitmaps": [
+ {
+ "name": "a",
+ "recording": true,
+ "persistent": true,
+ "busy": false,
+ "status": "active",
+ "granularity": 65536,
+ "count": 0
+ },
+ {
+ "name": "b",
+ "recording": true,
+ "persistent": true,
+ "busy": false,
+ "status": "active",
+ "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
},
- {
- "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": [
+ "file": "/tmp/bitmaps.1591792930",
+ "encryption_key_missing": false
+ },
+ {
+ "iops_rd": 0,
+ "detect_zeroes": "off",
+ "image": {
+ "virtual-size": 459264,
+ "filename": "/tmp/bitmaps.1591792930",
+ "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/bitmaps.1591792930",
+ "encryption_key_missing": false
+ },
+ {
+ "iops_rd": 0,
+ "detect_zeroes": "off",
+ "image": {
+ "backing-filename-format": "qcow2",
+ "virtual-size": 104857600,
+ "filename": "/tmp/bitmaps.1591792925",
+ "cluster-size": 65536,
+ "format": "qcow2",
+ "actual-size": 208896,
+ "format-specific": {
+ "type": "qcow2",
+ "data": {
+ "compat": "1.1",
+ "compression-type": "zlib",
+ "lazy-refcounts": false,
+ "bitmaps": [
{
- "name": "a",
- "recording": true,
- "persistent": true,
- "busy": false,
- "status": "active",
- "granularity": 65536,
- "count": 0
+ "flags": [
+ "auto"
+ ],
+ "name": "a",
+ "granularity": 65536
}
- ],
- "encrypted": false,
- "bps": 0,
- "bps_rd": 0,
- "cache": {
- "no-flush": false,
- "direct": false,
- "writeback": true
- },
- "file": "/tmp/pull4.1575911522",
- "encryption_key_missing": false
+ ],
+ "refcount-bits": 16,
+ "corrupt": false
+ }
+ },
+ "full-backing-filename": "/tmp/bitmaps.qcow2",
+ "backing-filename": "/tmp/bitmaps.qcow2",
+ "dirty-flag": 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_wr": 0,
+ "ro": true,
+ "node-name": "libvirt-4-format",
+ "backing_file_depth": 0,
+ "drv": "qcow2",
+ "iops": 0,
+ "bps_wr": 0,
+ "write_threshold": 0,
+ "backing_file": "/tmp/bitmaps.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
},
- {
- "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": [
+ "file": "/tmp/bitmaps.1591792925",
+ "encryption_key_missing": false
+ },
+ {
+ "iops_rd": 0,
+ "detect_zeroes": "off",
+ "image": {
+ "virtual-size": 328192,
+ "filename": "/tmp/bitmaps.1591792925",
+ "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/bitmaps.1591792925",
+ "encryption_key_missing": false
+ },
+ {
+ "iops_rd": 0,
+ "detect_zeroes": "off",
+ "image": {
+ "virtual-size": 104857600,
+ "filename": "/tmp/bitmaps.qcow2",
+ "cluster-size": 65536,
+ "format": "qcow2",
+ "actual-size": 208896,
+ "format-specific": {
+ "type": "qcow2",
+ "data": {
+ "compat": "1.1",
+ "compression-type": "zlib",
+ "lazy-refcounts": false,
+ "bitmaps": [
{
- "name": "a",
- "recording": true,
- "persistent": true,
- "busy": false,
- "status": "active",
- "granularity": 65536,
- "count": 0
+ "flags": [
+ "auto"
+ ],
+ "name": "a",
+ "granularity": 65536
}
- ],
- "encrypted": false,
- "bps": 0,
- "bps_rd": 0,
- "cache": {
- "no-flush": false,
- "direct": false,
- "writeback": true
- },
- "file": "/tmp/pull4.qcow2",
- "encryption_key_missing": false
+ ],
+ "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/bitmaps.qcow2",
+ "encryption_key_missing": false
+ },
+ {
+ "iops_rd": 0,
+ "detect_zeroes": "off",
+ "image": {
+ "virtual-size": 328192,
+ "filename": "/tmp/bitmaps.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
},
- {
- "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
- }
+ "file": "/tmp/bitmaps.qcow2",
+ "encryption_key_missing": false
+ }
]
diff --git a/tests/qemublocktestdata/bitmap/snapshots.out b/tests/qemublocktestdata/bitmap/snapshots.out
index 5dafe946cf..24ca27e4d8 100644
--- a/tests/qemublocktestdata/bitmap/snapshots.out
+++ b/tests/qemublocktestdata/bitmap/snapshots.out
@@ -1,12 +1,17 @@
libvirt-1-format:
- d: 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
+ a: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0
+ b: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0
+ c: record:1 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
+ c: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0
+ b: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0
+ a: record:1 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
+ a: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0
+ b: record:1 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
--
2.26.2
On 6/15/20 12:10 PM, Peter Krempa wrote: > Use test data which conforms to the new semantics which changed in the > previous patch. Well, a recent patch (the previous patch only touched tests, rather than changing semantics) > > The test data was created by the same set of commands as originally in > commit 0b27b655b1bac480186ce80457113cd5dc34e6a1 > > Signed-off-by: Peter Krempa <pkrempa@redhat.com> > --- > tests/qemublocktestdata/bitmap/snapshots.json | 1382 +++++++---------- > tests/qemublocktestdata/bitmap/snapshots.out | 13 +- > 2 files changed, 588 insertions(+), 807 deletions(-) > +++ b/tests/qemublocktestdata/bitmap/snapshots.out > @@ -1,12 +1,17 @@ > libvirt-1-format: > - d: 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 > + a: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0 > + b: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0 > + c: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0 > current: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0 So, where the old paradigm stitched bitmaps across snapshots (no need to add a bitmap to a new snapshot layer if it was already inactive in the old layer), the new paradigm says that every reachable checkpoint must have an active bitmap in the current layer, in addition to whatever bitmaps it had in earlier layers. Presumably, upcoming patches will tweak libvirt to actually create these bitmaps as part of creating an external snapshot, and I also see how you could utilize qemu adding block-dirty-bitmap-populate as a convenient way for re-creating such bitmaps after the fact (any bitmap that exists in the backing chain should basically mirror the allocation of the current layer in the chain). Reviewed-by: Eric Blake <eblake@redhat.com> -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org
On Thu, Jun 18, 2020 at 09:58:35 -0500, Eric Blake wrote: > On 6/15/20 12:10 PM, Peter Krempa wrote: > > Use test data which conforms to the new semantics which changed in the > > previous patch. > > Well, a recent patch (the previous patch only touched tests, rather than > changing semantics) > > > > > The test data was created by the same set of commands as originally in > > commit 0b27b655b1bac480186ce80457113cd5dc34e6a1 > > > > Signed-off-by: Peter Krempa <pkrempa@redhat.com> > > --- > > tests/qemublocktestdata/bitmap/snapshots.json | 1382 +++++++---------- > > tests/qemublocktestdata/bitmap/snapshots.out | 13 +- > > 2 files changed, 588 insertions(+), 807 deletions(-) > > > +++ b/tests/qemublocktestdata/bitmap/snapshots.out > > @@ -1,12 +1,17 @@ > > libvirt-1-format: > > - d: 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 > > + a: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0 > > + b: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0 > > + c: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0 > > current: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0 > > So, where the old paradigm stitched bitmaps across snapshots (no need to add > a bitmap to a new snapshot layer if it was already inactive in the old > layer), the new paradigm says that every reachable checkpoint must have an > active bitmap in the current layer, in addition to whatever bitmaps it had > in earlier layers. > > Presumably, upcoming patches will tweak libvirt to actually create these > bitmaps as part of creating an external snapshot, and I also see how you > could utilize qemu adding block-dirty-bitmap-populate as a convenient way > for re-creating such bitmaps after the fact (any bitmap that exists in the > backing chain should basically mirror the allocation of the current layer in > the chain). They are actually already being created by 'qemuDomainSnapshotDiskBitmapsPropagate', and that code is still valid. But I've noticed that the comment needs to be fixed probably.
© 2016 - 2025 Red Hat, Inc.