forked from rpms/libvirt
901 lines
31 KiB
Diff
901 lines
31 KiB
Diff
From 51214acf9b65be8575eac8ff82d63e5c260a48fe Mon Sep 17 00:00:00 2001
|
|
Message-Id: <51214acf9b65be8575eac8ff82d63e5c260a48fe@dist-git>
|
|
From: Peter Krempa <pkrempa@redhat.com>
|
|
Date: Tue, 4 Feb 2020 15:08:24 +0100
|
|
Subject: [PATCH] tests: qemublocktest: Add another synthetic test case for
|
|
broken bitmaps
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Add a case where a bitmap spanning multiple images is missing one of the
|
|
intermediate components.
|
|
|
|
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
(cherry picked from commit 8e29a8b151f59a53d2bb57bb58074185088f38f0)
|
|
|
|
https://bugzilla.redhat.com/show_bug.cgi?id=1207659
|
|
Message-Id: <0a1a64d620d9770afda50efc0e82c67dd3c2ae19.1580824112.git.pkrempa@redhat.com>
|
|
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
---
|
|
tests/qemublocktest.c | 8 +
|
|
.../bitmap/snapshots-synthetic-broken.json | 819 ++++++++++++++++++
|
|
.../bitmap/snapshots-synthetic-broken.out | 12 +
|
|
3 files changed, 839 insertions(+)
|
|
create mode 100644 tests/qemublocktestdata/bitmap/snapshots-synthetic-broken.json
|
|
create mode 100644 tests/qemublocktestdata/bitmap/snapshots-synthetic-broken.out
|
|
|
|
diff --git a/tests/qemublocktest.c b/tests/qemublocktest.c
|
|
index 6a7b07cfee..3208e90e41 100644
|
|
--- a/tests/qemublocktest.c
|
|
+++ b/tests/qemublocktest.c
|
|
@@ -1026,6 +1026,7 @@ mymain(void)
|
|
TEST_BITMAP_DETECT("synthetic");
|
|
TEST_BITMAP_DETECT("snapshots");
|
|
TEST_BITMAP_DETECT("snapshots-synthetic-checkpoint");
|
|
+ TEST_BITMAP_DETECT("snapshots-synthetic-broken");
|
|
|
|
#define TEST_BACKUP_BITMAP_CALCULATE(testname, source, incrbackup, named) \
|
|
do { \
|
|
@@ -1112,6 +1113,13 @@ mymain(void)
|
|
TEST_BITMAP_VALIDATE("snapshots-synthetic-checkpoint", "c", true);
|
|
TEST_BITMAP_VALIDATE("snapshots-synthetic-checkpoint", "d", true);
|
|
TEST_BITMAP_VALIDATE("snapshots-synthetic-checkpoint", "current", true);
|
|
+
|
|
+ TEST_BITMAP_VALIDATE("snapshots-synthetic-broken", "a", false);
|
|
+ TEST_BITMAP_VALIDATE("snapshots-synthetic-broken", "b", true);
|
|
+ TEST_BITMAP_VALIDATE("snapshots-synthetic-broken", "c", true);
|
|
+ TEST_BITMAP_VALIDATE("snapshots-synthetic-broken", "d", false);
|
|
+ TEST_BITMAP_VALIDATE("snapshots-synthetic-broken", "current", true);
|
|
+
|
|
cleanup:
|
|
virHashFree(diskxmljsondata.schema);
|
|
qemuTestDriverFree(&driver);
|
|
diff --git a/tests/qemublocktestdata/bitmap/snapshots-synthetic-broken.json b/tests/qemublocktestdata/bitmap/snapshots-synthetic-broken.json
|
|
new file mode 100644
|
|
index 0000000000..bf4963494f
|
|
--- /dev/null
|
|
+++ b/tests/qemublocktestdata/bitmap/snapshots-synthetic-broken.json
|
|
@@ -0,0 +1,819 @@
|
|
+[
|
|
+ {
|
|
+ "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,
|
|
+ "inconsistent": true,
|
|
+ "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": true,
|
|
+ "persistent": true,
|
|
+ "busy": false,
|
|
+ "status": "disabled",
|
|
+ "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": [
|
|
+ ],
|
|
+ "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
|
|
+ }
|
|
+]
|
|
diff --git a/tests/qemublocktestdata/bitmap/snapshots-synthetic-broken.out b/tests/qemublocktestdata/bitmap/snapshots-synthetic-broken.out
|
|
new file mode 100644
|
|
index 0000000000..022630bd76
|
|
--- /dev/null
|
|
+++ b/tests/qemublocktestdata/bitmap/snapshots-synthetic-broken.out
|
|
@@ -0,0 +1,12 @@
|
|
+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:1 gran:65536 dirty:0
|
|
+libvirt-3-format:
|
|
+ a: record:0 busy:0 persist:1 inconsist:0 gran:65536 dirty:0
|
|
+ b: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0
|
|
+libvirt-4-format:
|
|
+libvirt-5-format:
|
|
+ a: record:1 busy:0 persist:1 inconsist:0 gran:65536 dirty:0
|
|
--
|
|
2.25.0
|
|
|