]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: block: Don't nest storage layer properties into format layer
authorPeter Krempa <pkrempa@redhat.com>
Mon, 14 May 2018 11:54:12 +0000 (13:54 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 23 May 2018 11:18:23 +0000 (13:18 +0200)
Reference the storage via node name rather than inlining it. This is
the approach that will be used with -blockdev/blockdev-add since it
allows more control and is more future proof.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
32 files changed:
src/qemu/qemu_block.c
tests/qemublocktest.c
tests/qemublocktestdata/xml2json/block-raw-noopts.json
tests/qemublocktestdata/xml2json/dir-fat-cache.json
tests/qemublocktestdata/xml2json/dir-fat-floppy.json
tests/qemublocktestdata/xml2json/dir-fat-readonly.json
tests/qemublocktestdata/xml2json/file-backing_basic-aio_threads.json
tests/qemublocktestdata/xml2json/file-backing_basic-cache-directsync.json
tests/qemublocktestdata/xml2json/file-backing_basic-cache-none.json
tests/qemublocktestdata/xml2json/file-backing_basic-cache-unsafe.json
tests/qemublocktestdata/xml2json/file-backing_basic-cache-writeback.json
tests/qemublocktestdata/xml2json/file-backing_basic-cache-writethrough.json
tests/qemublocktestdata/xml2json/file-backing_basic-detect.json
tests/qemublocktestdata/xml2json/file-backing_basic-noopts.json
tests/qemublocktestdata/xml2json/file-backing_basic-unmap-detect.json
tests/qemublocktestdata/xml2json/file-backing_basic-unmap-ignore.json
tests/qemublocktestdata/xml2json/file-backing_basic-unmap.json
tests/qemublocktestdata/xml2json/file-bochs-noopts.json
tests/qemublocktestdata/xml2json/file-cloop-noopts.json
tests/qemublocktestdata/xml2json/file-dmg-noopts.json
tests/qemublocktestdata/xml2json/file-ploop-noopts.json
tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-encryption.json
tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-noopts.json
tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-unterminated.json
tests/qemublocktestdata/xml2json/file-raw-aio_native.json
tests/qemublocktestdata/xml2json/file-raw-luks.json
tests/qemublocktestdata/xml2json/file-raw-noopts.json
tests/qemublocktestdata/xml2json/file-vdi-noopts.json
tests/qemublocktestdata/xml2json/file-vhd-noopts.json
tests/qemublocktestdata/xml2json/file-vpc-noopts.json
tests/qemublocktestdata/xml2json/network-qcow2-backing-chain-cache-unsafe.json
tests/qemublocktestdata/xml2json/network-qcow2-backing-chain-encryption_auth.json

index 12f37cda0163655eece761e28857218903bede7f..a514e8a05535a93b0ea517dc46f9f0d30ea08e57 100644 (file)
@@ -1432,7 +1432,6 @@ virJSONValuePtr
 qemuBlockStorageSourceGetBlockdevProps(virStorageSourcePtr src)
 {
     bool backingSupported = src->format >= VIR_STORAGE_FILE_BACKING;
-    virJSONValuePtr storage = NULL;
     virJSONValuePtr props = NULL;
     virJSONValuePtr ret = NULL;
 
@@ -1446,13 +1445,9 @@ qemuBlockStorageSourceGetBlockdevProps(virStorageSourcePtr src)
     if (!(props = qemuBlockStorageSourceGetBlockdevFormatProps(src)))
         goto cleanup;
 
-    if (!(storage = qemuBlockStorageSourceGetBackendProps(src, false)))
+    if (virJSONValueObjectAppendString(props, "file", src->nodestorage) < 0)
         goto cleanup;
 
-    if (virJSONValueObjectAppend(props, "file", storage) < 0)
-        goto cleanup;
-    storage = NULL;
-
     if (src->backingStore && backingSupported) {
         if (virStorageSourceHasBacking(src)) {
             if (virJSONValueObjectAppendString(props, "backing",
@@ -1469,7 +1464,6 @@ qemuBlockStorageSourceGetBlockdevProps(virStorageSourcePtr src)
     VIR_STEAL_PTR(ret, props);
 
  cleanup:
-    virJSONValueFree(storage);
     virJSONValueFree(props);
     return ret;
 }
index eae1ca8ee3d5bf71bb6c63abd60399e92381cf7d..d671505969e4f436a247e0143922da6f4633ff20 100644 (file)
@@ -191,7 +191,8 @@ testQemuDiskXMLToProps(const void *opaque)
     struct testQemuDiskXMLToJSONData *data = (void *) opaque;
     virDomainDiskDefPtr disk = NULL;
     virStorageSourcePtr n;
-    virJSONValuePtr props = NULL;
+    virJSONValuePtr formatProps = NULL;
+    virJSONValuePtr storageProps = NULL;
     char *xmlpath = NULL;
     char *xmlstr = NULL;
     int ret = -1;
@@ -221,7 +222,8 @@ testQemuDiskXMLToProps(const void *opaque)
         if (testQemuDiskXMLToJSONFakeSecrets(n) < 0)
             goto cleanup;
 
-        if (!(props = qemuBlockStorageSourceGetBlockdevProps(n))) {
+        if (!(formatProps = qemuBlockStorageSourceGetBlockdevProps(n)) ||
+            !(storageProps = qemuBlockStorageSourceGetBackendProps(n, false))) {
             if (!data->fail) {
                 VIR_TEST_VERBOSE("failed to generate qemu blockdev props\n");
                 goto cleanup;
@@ -231,13 +233,16 @@ testQemuDiskXMLToProps(const void *opaque)
             goto cleanup;
         }
 
-        if (VIR_APPEND_ELEMENT(data->props, data->nprops, props) < 0)
+        if (VIR_APPEND_ELEMENT(data->props, data->nprops, formatProps) < 0 ||
+            VIR_APPEND_ELEMENT(data->props, data->nprops, storageProps) < 0)
             goto cleanup;
     }
 
     ret = 0;
 
  cleanup:
+    virJSONValueFree(formatProps);
+    virJSONValueFree(storageProps);
     virDomainDiskDefFree(disk);
     VIR_FREE(xmlpath);
     VIR_FREE(xmlstr);
index 25bf77d5aaac314796f7bd069c1e91c10c5652b1..f223659c76f7ac281a6d2f84f1c2e434b983c90f 100644 (file)
@@ -2,11 +2,12 @@
   "node-name": "0123456789ABCDEF0123456789ABCDE",
   "read-only": false,
   "driver": "raw",
-  "file": {
-    "driver": "host_device",
-    "filename": "/dev/blah",
-    "node-name": "0123456789ABCDEF0123456789ABCDE",
-    "read-only": false,
-    "discard": "unmap"
-  }
+  "file": "0123456789ABCDEF0123456789ABCDE"
+}
+{
+  "driver": "host_device",
+  "filename": "/dev/blah",
+  "node-name": "0123456789ABCDEF0123456789ABCDE",
+  "read-only": false,
+  "discard": "unmap"
 }
index 8c0a045ed5fd7132f4e40855302f336b5534dedb..ef33add681dc8b16e6f9bda62dea143ff1d80558 100644 (file)
@@ -6,17 +6,18 @@
     "no-flush": false
   },
   "driver": "raw",
-  "file": {
-    "driver": "vvfat",
-    "dir": "/var/somefiles",
-    "floppy": false,
-    "rw": false,
-    "node-name": "node-s",
-    "cache": {
-      "direct": true,
-      "no-flush": false
-    },
-    "read-only": true,
-    "discard": "unmap"
-  }
+  "file": "node-s"
+}
+{
+  "driver": "vvfat",
+  "dir": "/var/somefiles",
+  "floppy": false,
+  "rw": false,
+  "node-name": "node-s",
+  "cache": {
+    "direct": true,
+    "no-flush": false
+  },
+  "read-only": true,
+  "discard": "unmap"
 }
index 9685acaa8b3ba5f9785226df2da70065bb2923c6..db7954a6bc800c251b3b5632f98709c8ee96a9c6 100644 (file)
@@ -2,13 +2,14 @@
   "node-name": "node-f",
   "read-only": true,
   "driver": "raw",
-  "file": {
-    "driver": "vvfat",
-    "dir": "/var/somefiles",
-    "floppy": true,
-    "rw": false,
-    "node-name": "node-s",
-    "read-only": true,
-    "discard": "unmap"
-  }
+  "file": "node-s"
+}
+{
+  "driver": "vvfat",
+  "dir": "/var/somefiles",
+  "floppy": true,
+  "rw": false,
+  "node-name": "node-s",
+  "read-only": true,
+  "discard": "unmap"
 }
index 7d35d255cc104a5c403fb63984fe5c7125e374a8..a306fb4d47b560840bcf18ef85e212ee3be5883b 100644 (file)
@@ -2,13 +2,14 @@
   "node-name": "node-f",
   "read-only": true,
   "driver": "raw",
-  "file": {
-    "driver": "vvfat",
-    "dir": "/var/somefiles",
-    "floppy": false,
-    "rw": false,
-    "node-name": "node-s",
-    "read-only": true,
-    "discard": "unmap"
-  }
+  "file": "node-s"
+}
+{
+  "driver": "vvfat",
+  "dir": "/var/somefiles",
+  "floppy": false,
+  "rw": false,
+  "node-name": "node-s",
+  "read-only": true,
+  "discard": "unmap"
 }
index dcaf905085144e8b84b0cec041db97037a867c36..a9bdd1bcc286ab87e7b866c4e4715d9448f6d4fc 100644 (file)
@@ -2,61 +2,65 @@
   "node-name": "node-a-f",
   "read-only": false,
   "driver": "qcow",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/a",
-    "aio": "threads",
-    "node-name": "node-a-s",
-    "read-only": false,
-    "discard": "unmap"
-  },
+  "file": "node-a-s",
   "backing": "node-b-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/a",
+  "aio": "threads",
+  "node-name": "node-a-s",
+  "read-only": false,
+  "discard": "unmap"
+}
 {
   "node-name": "node-b-f",
   "read-only": true,
   "driver": "qed",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/b",
-    "aio": "threads",
-    "node-name": "node-b-s",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-b-s",
   "backing": "node-c-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/b",
+  "aio": "threads",
+  "node-name": "node-b-s",
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "node-c-f",
   "read-only": true,
   "driver": "vmdk",
-  "file": {
-    "driver": "gluster",
-    "volume": "images",
-    "path": "c",
-    "server": [
-      {
-        "type": "inet",
-        "host": "test.org",
-        "port": "24007"
-      }
-    ],
-    "node-name": "node-c-s",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-c-s",
   "backing": "node-d-f"
 }
+{
+  "driver": "gluster",
+  "volume": "images",
+  "path": "c",
+  "server": [
+    {
+      "type": "inet",
+      "host": "test.org",
+      "port": "24007"
+    }
+  ],
+  "node-name": "node-c-s",
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "node-d-f",
   "read-only": true,
   "driver": "raw",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/d",
-    "aio": "threads",
-    "node-name": "node-d-s",
-    "read-only": true,
-    "discard": "unmap"
-  }
+  "file": "node-d-s"
+}
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/d",
+  "aio": "threads",
+  "node-name": "node-d-s",
+  "read-only": true,
+  "discard": "unmap"
 }
index 023caf013f5ab9fd730156cb721fe63e35950739..18cd183cd8e00b4723692c8f52bc8f60fc6d27fb 100644 (file)
@@ -6,19 +6,20 @@
     "no-flush": false
   },
   "driver": "qcow2",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/a",
-    "node-name": "node-a-s",
-    "cache": {
-      "direct": true,
-      "no-flush": false
-    },
-    "read-only": false,
-    "discard": "unmap"
-  },
+  "file": "node-a-s",
   "backing": "node-b-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/a",
+  "node-name": "node-a-s",
+  "cache": {
+    "direct": true,
+    "no-flush": false
+  },
+  "read-only": false,
+  "discard": "unmap"
+}
 {
   "node-name": "node-b-f",
   "read-only": true,
     "no-flush": false
   },
   "driver": "qcow2",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/b",
-    "node-name": "node-b-s",
-    "cache": {
-      "direct": true,
-      "no-flush": false
-    },
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-b-s",
   "backing": "node-c-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/b",
+  "node-name": "node-b-s",
+  "cache": {
+    "direct": true,
+    "no-flush": false
+  },
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "node-c-f",
   "read-only": true,
     "no-flush": false
   },
   "driver": "qcow2",
-  "file": {
-    "driver": "gluster",
-    "volume": "images",
-    "path": "c",
-    "server": [
-      {
-        "type": "inet",
-        "host": "test.org",
-        "port": "24007"
-      }
-    ],
-    "node-name": "node-c-s",
-    "cache": {
-      "direct": true,
-      "no-flush": false
-    },
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-c-s",
   "backing": "node-d-f"
 }
+{
+  "driver": "gluster",
+  "volume": "images",
+  "path": "c",
+  "server": [
+    {
+      "type": "inet",
+      "host": "test.org",
+      "port": "24007"
+    }
+  ],
+  "node-name": "node-c-s",
+  "cache": {
+    "direct": true,
+    "no-flush": false
+  },
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "node-d-f",
   "read-only": true,
     "no-flush": false
   },
   "driver": "raw",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/d",
-    "node-name": "node-d-s",
-    "cache": {
-      "direct": true,
-      "no-flush": false
-    },
-    "read-only": true,
-    "discard": "unmap"
-  }
+  "file": "node-d-s"
+}
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/d",
+  "node-name": "node-d-s",
+  "cache": {
+    "direct": true,
+    "no-flush": false
+  },
+  "read-only": true,
+  "discard": "unmap"
 }
index 023caf013f5ab9fd730156cb721fe63e35950739..18cd183cd8e00b4723692c8f52bc8f60fc6d27fb 100644 (file)
@@ -6,19 +6,20 @@
     "no-flush": false
   },
   "driver": "qcow2",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/a",
-    "node-name": "node-a-s",
-    "cache": {
-      "direct": true,
-      "no-flush": false
-    },
-    "read-only": false,
-    "discard": "unmap"
-  },
+  "file": "node-a-s",
   "backing": "node-b-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/a",
+  "node-name": "node-a-s",
+  "cache": {
+    "direct": true,
+    "no-flush": false
+  },
+  "read-only": false,
+  "discard": "unmap"
+}
 {
   "node-name": "node-b-f",
   "read-only": true,
     "no-flush": false
   },
   "driver": "qcow2",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/b",
-    "node-name": "node-b-s",
-    "cache": {
-      "direct": true,
-      "no-flush": false
-    },
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-b-s",
   "backing": "node-c-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/b",
+  "node-name": "node-b-s",
+  "cache": {
+    "direct": true,
+    "no-flush": false
+  },
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "node-c-f",
   "read-only": true,
     "no-flush": false
   },
   "driver": "qcow2",
-  "file": {
-    "driver": "gluster",
-    "volume": "images",
-    "path": "c",
-    "server": [
-      {
-        "type": "inet",
-        "host": "test.org",
-        "port": "24007"
-      }
-    ],
-    "node-name": "node-c-s",
-    "cache": {
-      "direct": true,
-      "no-flush": false
-    },
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-c-s",
   "backing": "node-d-f"
 }
+{
+  "driver": "gluster",
+  "volume": "images",
+  "path": "c",
+  "server": [
+    {
+      "type": "inet",
+      "host": "test.org",
+      "port": "24007"
+    }
+  ],
+  "node-name": "node-c-s",
+  "cache": {
+    "direct": true,
+    "no-flush": false
+  },
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "node-d-f",
   "read-only": true,
     "no-flush": false
   },
   "driver": "raw",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/d",
-    "node-name": "node-d-s",
-    "cache": {
-      "direct": true,
-      "no-flush": false
-    },
-    "read-only": true,
-    "discard": "unmap"
-  }
+  "file": "node-d-s"
+}
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/d",
+  "node-name": "node-d-s",
+  "cache": {
+    "direct": true,
+    "no-flush": false
+  },
+  "read-only": true,
+  "discard": "unmap"
 }
index 5f6b94a9d559b2cca82058b15174a7ce10b07b03..4e92061c65a5c485f82cf4112ee26ff37bcb792c 100644 (file)
@@ -6,19 +6,20 @@
     "no-flush": true
   },
   "driver": "qcow2",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/a",
-    "node-name": "node-a-s",
-    "cache": {
-      "direct": false,
-      "no-flush": true
-    },
-    "read-only": false,
-    "discard": "unmap"
-  },
+  "file": "node-a-s",
   "backing": "node-b-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/a",
+  "node-name": "node-a-s",
+  "cache": {
+    "direct": false,
+    "no-flush": true
+  },
+  "read-only": false,
+  "discard": "unmap"
+}
 {
   "node-name": "node-b-f",
   "read-only": true,
     "no-flush": true
   },
   "driver": "qcow2",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/b",
-    "node-name": "node-b-s",
-    "cache": {
-      "direct": false,
-      "no-flush": true
-    },
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-b-s",
   "backing": "node-c-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/b",
+  "node-name": "node-b-s",
+  "cache": {
+    "direct": false,
+    "no-flush": true
+  },
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "node-c-f",
   "read-only": true,
     "no-flush": true
   },
   "driver": "qcow2",
-  "file": {
-    "driver": "gluster",
-    "volume": "images",
-    "path": "c",
-    "server": [
-      {
-        "type": "inet",
-        "host": "test.org",
-        "port": "24007"
-      }
-    ],
-    "node-name": "node-c-s",
-    "cache": {
-      "direct": false,
-      "no-flush": true
-    },
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-c-s",
   "backing": "node-d-f"
 }
+{
+  "driver": "gluster",
+  "volume": "images",
+  "path": "c",
+  "server": [
+    {
+      "type": "inet",
+      "host": "test.org",
+      "port": "24007"
+    }
+  ],
+  "node-name": "node-c-s",
+  "cache": {
+    "direct": false,
+    "no-flush": true
+  },
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "node-d-f",
   "read-only": true,
     "no-flush": true
   },
   "driver": "raw",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/d",
-    "node-name": "node-d-s",
-    "cache": {
-      "direct": false,
-      "no-flush": true
-    },
-    "read-only": true,
-    "discard": "unmap"
-  }
+  "file": "node-d-s"
+}
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/d",
+  "node-name": "node-d-s",
+  "cache": {
+    "direct": false,
+    "no-flush": true
+  },
+  "read-only": true,
+  "discard": "unmap"
 }
index 9dc7d388504138b3b6668e2fa9029f80f5e550a1..a105b47483ac59f179f937dea66551b35e89cc1c 100644 (file)
@@ -6,19 +6,20 @@
     "no-flush": false
   },
   "driver": "qcow2",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/a",
-    "node-name": "node-a-s",
-    "cache": {
-      "direct": false,
-      "no-flush": false
-    },
-    "read-only": false,
-    "discard": "unmap"
-  },
+  "file": "node-a-s",
   "backing": "node-b-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/a",
+  "node-name": "node-a-s",
+  "cache": {
+    "direct": false,
+    "no-flush": false
+  },
+  "read-only": false,
+  "discard": "unmap"
+}
 {
   "node-name": "node-b-f",
   "read-only": true,
     "no-flush": false
   },
   "driver": "qcow2",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/b",
-    "node-name": "node-b-s",
-    "cache": {
-      "direct": false,
-      "no-flush": false
-    },
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-b-s",
   "backing": "node-c-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/b",
+  "node-name": "node-b-s",
+  "cache": {
+    "direct": false,
+    "no-flush": false
+  },
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "node-c-f",
   "read-only": true,
     "no-flush": false
   },
   "driver": "qcow2",
-  "file": {
-    "driver": "gluster",
-    "volume": "images",
-    "path": "c",
-    "server": [
-      {
-        "type": "inet",
-        "host": "test.org",
-        "port": "24007"
-      }
-    ],
-    "node-name": "node-c-s",
-    "cache": {
-      "direct": false,
-      "no-flush": false
-    },
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-c-s",
   "backing": "node-d-f"
 }
+{
+  "driver": "gluster",
+  "volume": "images",
+  "path": "c",
+  "server": [
+    {
+      "type": "inet",
+      "host": "test.org",
+      "port": "24007"
+    }
+  ],
+  "node-name": "node-c-s",
+  "cache": {
+    "direct": false,
+    "no-flush": false
+  },
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "node-d-f",
   "read-only": true,
     "no-flush": false
   },
   "driver": "raw",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/d",
-    "node-name": "node-d-s",
-    "cache": {
-      "direct": false,
-      "no-flush": false
-    },
-    "read-only": true,
-    "discard": "unmap"
-  }
+  "file": "node-d-s"
+}
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/d",
+  "node-name": "node-d-s",
+  "cache": {
+    "direct": false,
+    "no-flush": false
+  },
+  "read-only": true,
+  "discard": "unmap"
 }
index 9dc7d388504138b3b6668e2fa9029f80f5e550a1..a105b47483ac59f179f937dea66551b35e89cc1c 100644 (file)
@@ -6,19 +6,20 @@
     "no-flush": false
   },
   "driver": "qcow2",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/a",
-    "node-name": "node-a-s",
-    "cache": {
-      "direct": false,
-      "no-flush": false
-    },
-    "read-only": false,
-    "discard": "unmap"
-  },
+  "file": "node-a-s",
   "backing": "node-b-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/a",
+  "node-name": "node-a-s",
+  "cache": {
+    "direct": false,
+    "no-flush": false
+  },
+  "read-only": false,
+  "discard": "unmap"
+}
 {
   "node-name": "node-b-f",
   "read-only": true,
     "no-flush": false
   },
   "driver": "qcow2",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/b",
-    "node-name": "node-b-s",
-    "cache": {
-      "direct": false,
-      "no-flush": false
-    },
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-b-s",
   "backing": "node-c-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/b",
+  "node-name": "node-b-s",
+  "cache": {
+    "direct": false,
+    "no-flush": false
+  },
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "node-c-f",
   "read-only": true,
     "no-flush": false
   },
   "driver": "qcow2",
-  "file": {
-    "driver": "gluster",
-    "volume": "images",
-    "path": "c",
-    "server": [
-      {
-        "type": "inet",
-        "host": "test.org",
-        "port": "24007"
-      }
-    ],
-    "node-name": "node-c-s",
-    "cache": {
-      "direct": false,
-      "no-flush": false
-    },
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-c-s",
   "backing": "node-d-f"
 }
+{
+  "driver": "gluster",
+  "volume": "images",
+  "path": "c",
+  "server": [
+    {
+      "type": "inet",
+      "host": "test.org",
+      "port": "24007"
+    }
+  ],
+  "node-name": "node-c-s",
+  "cache": {
+    "direct": false,
+    "no-flush": false
+  },
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "node-d-f",
   "read-only": true,
     "no-flush": false
   },
   "driver": "raw",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/d",
-    "node-name": "node-d-s",
-    "cache": {
-      "direct": false,
-      "no-flush": false
-    },
-    "read-only": true,
-    "discard": "unmap"
-  }
+  "file": "node-d-s"
+}
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/d",
+  "node-name": "node-d-s",
+  "cache": {
+    "direct": false,
+    "no-flush": false
+  },
+  "read-only": true,
+  "discard": "unmap"
 }
index c1e4c40757e32fac2dad9c0803483bb1e4904be9..44a6e90fcdf76339fb9980656e5b84b8562fa78e 100644 (file)
@@ -3,58 +3,62 @@
   "read-only": false,
   "detect-zeroes": "on",
   "driver": "qcow",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/a",
-    "node-name": "node-a-s",
-    "read-only": false,
-    "discard": "unmap"
-  },
+  "file": "node-a-s",
   "backing": "node-b-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/a",
+  "node-name": "node-a-s",
+  "read-only": false,
+  "discard": "unmap"
+}
 {
   "node-name": "node-b-f",
   "read-only": true,
   "driver": "qed",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/b",
-    "node-name": "node-b-s",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-b-s",
   "backing": "node-c-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/b",
+  "node-name": "node-b-s",
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "node-c-f",
   "read-only": true,
   "driver": "vmdk",
-  "file": {
-    "driver": "gluster",
-    "volume": "images",
-    "path": "c",
-    "server": [
-      {
-        "type": "inet",
-        "host": "test.org",
-        "port": "24007"
-      }
-    ],
-    "node-name": "node-c-s",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-c-s",
   "backing": "node-d-f"
 }
+{
+  "driver": "gluster",
+  "volume": "images",
+  "path": "c",
+  "server": [
+    {
+      "type": "inet",
+      "host": "test.org",
+      "port": "24007"
+    }
+  ],
+  "node-name": "node-c-s",
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "node-d-f",
   "read-only": true,
   "driver": "raw",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/d",
-    "node-name": "node-d-s",
-    "read-only": true,
-    "discard": "unmap"
-  }
+  "file": "node-d-s"
+}
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/d",
+  "node-name": "node-d-s",
+  "read-only": true,
+  "discard": "unmap"
 }
index 3285a6ec67e564f0db60e2757fba56db4335af46..b0fd9b698804b1762e1218d3f2b4d40873cebdbc 100644 (file)
@@ -2,50 +2,54 @@
   "node-name": "node-a-f",
   "read-only": false,
   "driver": "qed",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/a",
-    "node-name": "node-a-s",
-    "read-only": false,
-    "discard": "unmap"
-  },
+  "file": "node-a-s",
   "backing": "node-b-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/a",
+  "node-name": "node-a-s",
+  "read-only": false,
+  "discard": "unmap"
+}
 {
   "node-name": "node-b-f",
   "read-only": true,
   "driver": "qcow",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/b",
-    "node-name": "node-b-s",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-b-s",
   "backing": "node-c-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/b",
+  "node-name": "node-b-s",
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "node-c-f",
   "read-only": true,
   "driver": "vmdk",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/c",
-    "node-name": "node-c-s",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-c-s",
   "backing": "node-d-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/c",
+  "node-name": "node-c-s",
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "node-d-f",
   "read-only": true,
   "driver": "raw",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/d",
-    "node-name": "node-d-s",
-    "read-only": true,
-    "discard": "unmap"
-  }
+  "file": "node-d-s"
+}
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/d",
+  "node-name": "node-d-s",
+  "read-only": true,
+  "discard": "unmap"
 }
index b00008dd54e59a8aa738627e7a6833025c67b5bf..6cf4e7709010d152a57d02f9ab02a69491d7055c 100644 (file)
@@ -4,61 +4,65 @@
   "discard": "unmap",
   "detect-zeroes": "unmap",
   "driver": "qcow",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/a",
-    "node-name": "node-a-s",
-    "read-only": false,
-    "discard": "unmap"
-  },
+  "file": "node-a-s",
   "backing": "node-b-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/a",
+  "node-name": "node-a-s",
+  "read-only": false,
+  "discard": "unmap"
+}
 {
   "node-name": "node-b-f",
   "read-only": true,
   "discard": "unmap",
   "driver": "qed",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/b",
-    "node-name": "node-b-s",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-b-s",
   "backing": "node-c-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/b",
+  "node-name": "node-b-s",
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "node-c-f",
   "read-only": true,
   "discard": "unmap",
   "driver": "vmdk",
-  "file": {
-    "driver": "gluster",
-    "volume": "images",
-    "path": "c",
-    "server": [
-      {
-        "type": "inet",
-        "host": "test.org",
-        "port": "24007"
-      }
-    ],
-    "node-name": "node-c-s",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-c-s",
   "backing": "node-d-f"
 }
+{
+  "driver": "gluster",
+  "volume": "images",
+  "path": "c",
+  "server": [
+    {
+      "type": "inet",
+      "host": "test.org",
+      "port": "24007"
+    }
+  ],
+  "node-name": "node-c-s",
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "node-d-f",
   "read-only": true,
   "discard": "unmap",
   "driver": "raw",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/d",
-    "node-name": "node-d-s",
-    "read-only": true,
-    "discard": "unmap"
-  }
+  "file": "node-d-s"
+}
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/d",
+  "node-name": "node-d-s",
+  "read-only": true,
+  "discard": "unmap"
 }
index 5419deafc0f0c00197bbf98e826ce6a379b71d7d..b6e454297f0f9b50389caacee6f21f82bf957c2e 100644 (file)
@@ -4,61 +4,65 @@
   "discard": "ignore",
   "detect-zeroes": "on",
   "driver": "qcow",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/a",
-    "node-name": "node-a-s",
-    "read-only": false,
-    "discard": "unmap"
-  },
+  "file": "node-a-s",
   "backing": "node-b-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/a",
+  "node-name": "node-a-s",
+  "read-only": false,
+  "discard": "unmap"
+}
 {
   "node-name": "node-b-f",
   "read-only": true,
   "discard": "ignore",
   "driver": "qed",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/b",
-    "node-name": "node-b-s",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-b-s",
   "backing": "node-c-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/b",
+  "node-name": "node-b-s",
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "node-c-f",
   "read-only": true,
   "discard": "ignore",
   "driver": "vmdk",
-  "file": {
-    "driver": "gluster",
-    "volume": "images",
-    "path": "c",
-    "server": [
-      {
-        "type": "inet",
-        "host": "test.org",
-        "port": "24007"
-      }
-    ],
-    "node-name": "node-c-s",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-c-s",
   "backing": "node-d-f"
 }
+{
+  "driver": "gluster",
+  "volume": "images",
+  "path": "c",
+  "server": [
+    {
+      "type": "inet",
+      "host": "test.org",
+      "port": "24007"
+    }
+  ],
+  "node-name": "node-c-s",
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "node-d-f",
   "read-only": true,
   "discard": "ignore",
   "driver": "raw",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/d",
-    "node-name": "node-d-s",
-    "read-only": true,
-    "discard": "unmap"
-  }
+  "file": "node-d-s"
+}
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/d",
+  "node-name": "node-d-s",
+  "read-only": true,
+  "discard": "unmap"
 }
index 1efc462c062a8a3bc2916c6c59a4eeef401c4d35..21a10c854303659db78db7f8dc61c8e9d3401276 100644 (file)
@@ -3,61 +3,65 @@
   "read-only": false,
   "discard": "unmap",
   "driver": "qcow",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/a",
-    "node-name": "node-a-s",
-    "read-only": false,
-    "discard": "unmap"
-  },
+  "file": "node-a-s",
   "backing": "node-b-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/a",
+  "node-name": "node-a-s",
+  "read-only": false,
+  "discard": "unmap"
+}
 {
   "node-name": "node-b-f",
   "read-only": true,
   "discard": "unmap",
   "driver": "qed",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/b",
-    "node-name": "node-b-s",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-b-s",
   "backing": "node-c-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/b",
+  "node-name": "node-b-s",
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "node-c-f",
   "read-only": true,
   "discard": "unmap",
   "driver": "vmdk",
-  "file": {
-    "driver": "gluster",
-    "volume": "images",
-    "path": "c",
-    "server": [
-      {
-        "type": "inet",
-        "host": "test.org",
-        "port": "24007"
-      }
-    ],
-    "node-name": "node-c-s",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-c-s",
   "backing": "node-d-f"
 }
+{
+  "driver": "gluster",
+  "volume": "images",
+  "path": "c",
+  "server": [
+    {
+      "type": "inet",
+      "host": "test.org",
+      "port": "24007"
+    }
+  ],
+  "node-name": "node-c-s",
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "node-d-f",
   "read-only": true,
   "discard": "unmap",
   "driver": "raw",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/d",
-    "node-name": "node-d-s",
-    "read-only": true,
-    "discard": "unmap"
-  }
+  "file": "node-d-s"
+}
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/d",
+  "node-name": "node-d-s",
+  "read-only": true,
+  "discard": "unmap"
 }
index 22e2560998a16eea3b6ec129391c3c35ea8fe17c..6ab43b2a1cc1901ac879f38802fc2b48a172c751 100644 (file)
@@ -2,11 +2,12 @@
   "node-name": "test1",
   "read-only": false,
   "driver": "bochs",
-  "file": {
-    "driver": "file",
-    "filename": "/path/to/i.img",
-    "node-name": "test2",
-    "read-only": false,
-    "discard": "unmap"
-  }
+  "file": "test2"
+}
+{
+  "driver": "file",
+  "filename": "/path/to/i.img",
+  "node-name": "test2",
+  "read-only": false,
+  "discard": "unmap"
 }
index b72bb5df56d042e595fa343c4bd34fa99bed598b..f709c3d3bdb53cbc39d05c186eda9ff1a0d473fc 100644 (file)
@@ -2,11 +2,12 @@
   "node-name": "test1",
   "read-only": false,
   "driver": "cloop",
-  "file": {
-    "driver": "file",
-    "filename": "/path/to/i.img",
-    "node-name": "test2",
-    "read-only": false,
-    "discard": "unmap"
-  }
+  "file": "test2"
+}
+{
+  "driver": "file",
+  "filename": "/path/to/i.img",
+  "node-name": "test2",
+  "read-only": false,
+  "discard": "unmap"
 }
index 9f2912b8d3637deb2ef7bf72365b62d541f35377..55261de4b2ed6114f72ca7ce394fe6aedca45d7d 100644 (file)
@@ -2,11 +2,12 @@
   "node-name": "test1",
   "read-only": false,
   "driver": "dmg",
-  "file": {
-    "driver": "file",
-    "filename": "/path/to/i.img",
-    "node-name": "test2",
-    "read-only": false,
-    "discard": "unmap"
-  }
+  "file": "test2"
+}
+{
+  "driver": "file",
+  "filename": "/path/to/i.img",
+  "node-name": "test2",
+  "read-only": false,
+  "discard": "unmap"
 }
index 64006d28a37b9c4ec46eff2591f9663359074685..81fa263098a50a1e728bf6365b57b86851fcb81c 100644 (file)
@@ -2,11 +2,12 @@
   "node-name": "test1",
   "read-only": false,
   "driver": "parallels",
-  "file": {
-    "driver": "file",
-    "filename": "/path/to/i.img",
-    "node-name": "test2",
-    "read-only": false,
-    "discard": "unmap"
-  }
+  "file": "test2"
+}
+{
+  "driver": "file",
+  "filename": "/path/to/i.img",
+  "node-name": "test2",
+  "read-only": false,
+  "discard": "unmap"
 }
index 94e2ecd1e2b15fc89d699b6243bd44a2336bc641..3469c0665455ecaa9b5cb1f23deedc3e9b8bc36b 100644 (file)
@@ -6,15 +6,16 @@
     "format": "luks",
     "key-secret": "node-b-f-encalias"
   },
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/a",
-    "node-name": "node-a-s",
-    "read-only": false,
-    "discard": "unmap"
-  },
+  "file": "node-a-s",
   "backing": "node-b-f"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/a",
+  "node-name": "node-a-s",
+  "read-only": false,
+  "discard": "unmap"
+}
 {
   "node-name": "node-b-f",
   "read-only": true,
     "format": "aes",
     "key-secret": "node-b-f-encalias"
   },
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/b",
-    "node-name": "node-b-s",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-b-s",
   "backing": null
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/b",
+  "node-name": "node-b-s",
+  "read-only": true,
+  "discard": "unmap"
+}
index 3e7c08f08026b74c4677ff6e17fc1c3a367859e9..6bc6e2fe30122a675eb92adf43ef1f2fccc4a8ba 100644 (file)
   "node-name": "#block126",
   "read-only": false,
   "driver": "qcow2",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/rhel7.3.1507297895",
-    "node-name": "#block004",
-    "read-only": false,
-    "discard": "unmap"
-  },
+  "file": "#block004",
   "backing": "#block313"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/rhel7.3.1507297895",
+  "node-name": "#block004",
+  "read-only": false,
+  "discard": "unmap"
+}
 {
   "node-name": "#block313",
   "read-only": true,
   "driver": "qcow2",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/rhel7.3.1484071872",
-    "node-name": "#block256",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "#block256",
   "backing": "#block556"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/rhel7.3.1484071872",
+  "node-name": "#block256",
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "#block556",
   "read-only": true,
   "driver": "qcow2",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/rhel7.3.1483615252",
-    "node-name": "#block418",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "#block418",
   "backing": "#block767"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/rhel7.3.1483615252",
+  "node-name": "#block418",
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "#block767",
   "read-only": true,
   "driver": "qcow2",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/rhel7.3.1483605924",
-    "node-name": "#block624",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "#block624",
   "backing": "#block937"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/rhel7.3.1483605924",
+  "node-name": "#block624",
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "#block937",
   "read-only": true,
   "driver": "qcow2",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/rhel7.3.1483605920",
-    "node-name": "#block869",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "#block869",
   "backing": "#block1157"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/rhel7.3.1483605920",
+  "node-name": "#block869",
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "#block1157",
   "read-only": true,
   "driver": "qcow2",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/rhel7.3.1483546244",
-    "node-name": "#block1047",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "#block1047",
   "backing": "#block1392"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/rhel7.3.1483546244",
+  "node-name": "#block1047",
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "#block1392",
   "read-only": true,
   "driver": "qcow2",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/rhel7.3.1483545901",
-    "node-name": "#block1279",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "#block1279",
   "backing": "#block1523"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/rhel7.3.1483545901",
+  "node-name": "#block1279",
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "#block1523",
   "read-only": true,
   "driver": "qcow2",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/rhel7.3.1483545313",
-    "node-name": "#block1444",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "#block1444",
   "backing": "#block1742"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/rhel7.3.1483545313",
+  "node-name": "#block1444",
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "#block1742",
   "read-only": true,
   "driver": "qcow2",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/rhel7.3.1483536402",
-    "node-name": "#block1602",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "#block1602",
   "backing": "#block1909"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/rhel7.3.1483536402",
+  "node-name": "#block1602",
+  "read-only": true,
+  "discard": "unmap"
+}
 {
   "node-name": "#block1909",
   "read-only": true,
   "driver": "qcow2",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/rhel7.3.qcow2",
-    "node-name": "#block1864",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "#block1864",
   "backing": null
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/rhel7.3.qcow2",
+  "node-name": "#block1864",
+  "read-only": true,
+  "discard": "unmap"
+}
index 8fcdc48bb02c9a0b5e085f7b6bf684349707a7c7..454c07faec7a687dfa371bdf45b319d76480f7a0 100644 (file)
@@ -2,24 +2,26 @@
   "node-name": "#block126",
   "read-only": false,
   "driver": "qcow2",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/rhel7.3.1507297895",
-    "node-name": "#block004",
-    "read-only": false,
-    "discard": "unmap"
-  },
+  "file": "#block004",
   "backing": "#block313"
 }
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/rhel7.3.1507297895",
+  "node-name": "#block004",
+  "read-only": false,
+  "discard": "unmap"
+}
 {
   "node-name": "#block313",
   "read-only": true,
   "driver": "qcow2",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/rhel7.3.1484071872",
-    "node-name": "#block256",
-    "read-only": true,
-    "discard": "unmap"
-  }
+  "file": "#block256"
+}
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/rhel7.3.1484071872",
+  "node-name": "#block256",
+  "read-only": true,
+  "discard": "unmap"
 }
index 2752e0b20403d3543ab32c4bcf4fc7aa0134e279..4e63561311f9754c5127d84cfc367f0915854ac0 100644 (file)
@@ -6,16 +6,17 @@
     "no-flush": false
   },
   "driver": "raw",
-  "file": {
-    "driver": "file",
-    "filename": "/path/to/i.img",
-    "aio": "native",
-    "node-name": "test2",
-    "cache": {
-      "direct": true,
-      "no-flush": false
-    },
-    "read-only": false,
-    "discard": "unmap"
-  }
+  "file": "test2"
+}
+{
+  "driver": "file",
+  "filename": "/path/to/i.img",
+  "aio": "native",
+  "node-name": "test2",
+  "cache": {
+    "direct": true,
+    "no-flush": false
+  },
+  "read-only": false,
+  "discard": "unmap"
 }
index e3d9c4c26bb6a333b3cdfad594e9ba1f369b459c..c26dd3bba5e120b61d8fc22647266c1c7e366edb 100644 (file)
@@ -3,11 +3,12 @@
   "read-only": false,
   "driver": "luks",
   "key-secret": "test1-encalias",
-  "file": {
-    "driver": "file",
-    "filename": "/path/luks.img",
-    "node-name": "test2",
-    "read-only": false,
-    "discard": "unmap"
-  }
+  "file": "test2"
+}
+{
+  "driver": "file",
+  "filename": "/path/luks.img",
+  "node-name": "test2",
+  "read-only": false,
+  "discard": "unmap"
 }
index 25de5714286e0f7995e73c5cdb88e445d861cea0..cace1f6448bad82dd37bd6c88cea6cba9f5c13a2 100644 (file)
@@ -2,11 +2,12 @@
   "node-name": "0123456789ABCDEF0123456789ABCDE",
   "read-only": false,
   "driver": "raw",
-  "file": {
-    "driver": "file",
-    "filename": "/var/lib/libvirt/images/i.img",
-    "node-name": "0123456789ABCDEF0123456789ABCDE",
-    "read-only": false,
-    "discard": "unmap"
-  }
+  "file": "0123456789ABCDEF0123456789ABCDE"
+}
+{
+  "driver": "file",
+  "filename": "/var/lib/libvirt/images/i.img",
+  "node-name": "0123456789ABCDEF0123456789ABCDE",
+  "read-only": false,
+  "discard": "unmap"
 }
index ce8e359c91ccea3daa41cfa23521485205e475c3..15f9da2091019638a37410a6c3b2d85ddc09fbf1 100644 (file)
@@ -2,11 +2,12 @@
   "node-name": "test1",
   "read-only": false,
   "driver": "vdi",
-  "file": {
-    "driver": "file",
-    "filename": "/path/to/i.img",
-    "node-name": "test2",
-    "read-only": false,
-    "discard": "unmap"
-  }
+  "file": "test2"
+}
+{
+  "driver": "file",
+  "filename": "/path/to/i.img",
+  "node-name": "test2",
+  "read-only": false,
+  "discard": "unmap"
 }
index d4b8e1f55ad862bbe272d5c2438cbbc0a06e1d45..ce96c4be8aaaead7359e252e758c8e92aca21275 100644 (file)
@@ -2,11 +2,12 @@
   "node-name": "test1",
   "read-only": false,
   "driver": "vhdx",
-  "file": {
-    "driver": "file",
-    "filename": "/path/to/i.img",
-    "node-name": "test2",
-    "read-only": false,
-    "discard": "unmap"
-  }
+  "file": "test2"
+}
+{
+  "driver": "file",
+  "filename": "/path/to/i.img",
+  "node-name": "test2",
+  "read-only": false,
+  "discard": "unmap"
 }
index be1ec795a726f7419ac3933b5a5b9b4869f7d3bb..9cba99e5674956846f5c0cc24ee7c355cfcd4dd5 100644 (file)
@@ -2,11 +2,12 @@
   "node-name": "test1",
   "read-only": false,
   "driver": "vpc",
-  "file": {
-    "driver": "file",
-    "filename": "/path/to/i.img",
-    "node-name": "test2",
-    "read-only": false,
-    "discard": "unmap"
-  }
+  "file": "test2"
+}
+{
+  "driver": "file",
+  "filename": "/path/to/i.img",
+  "node-name": "test2",
+  "read-only": false,
+  "discard": "unmap"
 }
index 6161f3375d57759f82985b1fdf8c11e1d5ff2ce1..80a694eee442625550b8fead99badcb6a964ef68 100644 (file)
@@ -6,30 +6,31 @@
     "no-flush": true
   },
   "driver": "qcow2",
-  "file": {
-    "driver": "rbd",
-    "pool": "rbdpool",
-    "image": "rbdimg",
-    "server": [
-      {
-        "host": "host1.example.com",
-        "port": "0"
-      },
-      {
-        "host": "host2.example.com",
-        "port": "0"
-      }
-    ],
-    "user": "testuser-rbd",
-    "node-name": "node-a-s",
-    "cache": {
-      "direct": false,
-      "no-flush": true
+  "file": "node-a-s",
+  "backing": "node-b-f"
+}
+{
+  "driver": "rbd",
+  "pool": "rbdpool",
+  "image": "rbdimg",
+  "server": [
+    {
+      "host": "host1.example.com",
+      "port": "0"
     },
-    "read-only": false,
-    "discard": "unmap"
+    {
+      "host": "host2.example.com",
+      "port": "0"
+    }
+  ],
+  "user": "testuser-rbd",
+  "node-name": "node-a-s",
+  "cache": {
+    "direct": false,
+    "no-flush": true
   },
-  "backing": "node-b-f"
+  "read-only": false,
+  "discard": "unmap"
 }
 {
   "node-name": "node-b-f",
     "no-flush": true
   },
   "driver": "qcow2",
-  "file": {
-    "driver": "iscsi",
-    "portal": "example.org:3260",
-    "target": "iscsitarget",
-    "lun": 1,
-    "transport": "tcp",
-    "node-name": "node-b-s",
-    "cache": {
-      "direct": false,
-      "no-flush": true
-    },
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-b-s",
   "backing": null
 }
+{
+  "driver": "iscsi",
+  "portal": "example.org:3260",
+  "target": "iscsitarget",
+  "lun": 1,
+  "transport": "tcp",
+  "node-name": "node-b-s",
+  "cache": {
+    "direct": false,
+    "no-flush": true
+  },
+  "read-only": true,
+  "discard": "unmap"
+}
index 7e7a4e44f7a47bd958de37a790246a2d325aaf93..6e5abbfbdd6f31b313d58288b11e1ec4ab9daad1 100644 (file)
@@ -6,27 +6,28 @@
     "format": "luks",
     "key-secret": "node-b-f-encalias"
   },
-  "file": {
-    "driver": "rbd",
-    "pool": "rbdpool",
-    "image": "rbdimg",
-    "server": [
-      {
-        "host": "host1.example.com",
-        "port": "0"
-      },
-      {
-        "host": "host2.example.com",
-        "port": "0"
-      }
-    ],
-    "user": "testuser-rbd",
-    "node-name": "node-a-s",
-    "read-only": false,
-    "discard": "unmap"
-  },
+  "file": "node-a-s",
   "backing": "node-b-f"
 }
+{
+  "driver": "rbd",
+  "pool": "rbdpool",
+  "image": "rbdimg",
+  "server": [
+    {
+      "host": "host1.example.com",
+      "port": "0"
+    },
+    {
+      "host": "host2.example.com",
+      "port": "0"
+    }
+  ],
+  "user": "testuser-rbd",
+  "node-name": "node-a-s",
+  "read-only": false,
+  "discard": "unmap"
+}
 {
   "node-name": "node-b-f",
   "read-only": true,
     "format": "aes",
     "key-secret": "node-b-f-encalias"
   },
-  "file": {
-    "driver": "iscsi",
-    "portal": "example.org:3260",
-    "target": "iqn.2016-09.com.example:iscsitarget",
-    "lun": 1,
-    "transport": "tcp",
-    "user": "testuser-iscsi",
-    "password-secret": "node-b-s-secalias",
-    "node-name": "node-b-s",
-    "read-only": true,
-    "discard": "unmap"
-  },
+  "file": "node-b-s",
   "backing": null
 }
+{
+  "driver": "iscsi",
+  "portal": "example.org:3260",
+  "target": "iqn.2016-09.com.example:iscsitarget",
+  "lun": 1,
+  "transport": "tcp",
+  "user": "testuser-iscsi",
+  "password-secret": "node-b-s-secalias",
+  "node-name": "node-b-s",
+  "read-only": true,
+  "discard": "unmap"
+}