]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: block: Add support for 'pr-manager' in qemuBlockStorageSourceGetFileProps
authorPeter Krempa <pkrempa@redhat.com>
Wed, 30 May 2018 13:47:13 +0000 (15:47 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 5 Jun 2018 06:13:59 +0000 (08:13 +0200)
To keep feature parity, we need to be able to format the PR manager
alias when using blockdev.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_block.c
tests/qemublocktest.c
tests/qemublocktestdata/xml2json/block-raw-reservations.json [new file with mode: 0644]
tests/qemublocktestdata/xml2json/block-raw-reservations.xml [new file with mode: 0644]

index 09437cdb4042873fddb38add995ba67be5465244..d1c2d756c2d1cdc96663431e9d3cc34aaa64f9d1 100644 (file)
@@ -998,6 +998,7 @@ qemuBlockStorageSourceGetFileProps(virStorageSourcePtr src)
 {
     const char *driver = "file";
     const char *iomode = NULL;
+    const char *prManagerAlias = NULL;
     virJSONValuePtr ret = NULL;
 
     if (src->iomode != VIR_DOMAIN_DISK_IO_DEFAULT)
@@ -1010,10 +1011,14 @@ qemuBlockStorageSourceGetFileProps(virStorageSourcePtr src)
             driver = "host_device";
     }
 
+    if (src->pr)
+        prManagerAlias = src->pr->mgralias;
+
     ignore_value(virJSONValueObjectCreate(&ret,
                                           "s:driver", driver,
                                           "s:filename", src->path,
                                           "S:aio", iomode,
+                                          "S:pr-manager", prManagerAlias,
                                           NULL) < 0);
     return ret;
 }
index ec882b43e1ee6aa63d7ce46382bcb8c61253d757..d0cd834b05f666a937c7fd2efa53bdac55cbf521 100644 (file)
@@ -488,6 +488,7 @@ mymain(void)
     TEST_DISK_TO_JSON("dir-fat-cache");
 
     TEST_DISK_TO_JSON("block-raw-noopts");
+    TEST_DISK_TO_JSON("block-raw-reservations");
 
  cleanup:
     virHashFree(diskxmljsondata.schema);
diff --git a/tests/qemublocktestdata/xml2json/block-raw-reservations.json b/tests/qemublocktestdata/xml2json/block-raw-reservations.json
new file mode 100644 (file)
index 0000000..2fb106d
--- /dev/null
@@ -0,0 +1,14 @@
+{
+  "node-name": "node-a-fo",
+  "read-only": false,
+  "driver": "raw",
+  "file": "node-a-st"
+}
+{
+  "driver": "host_device",
+  "filename": "/dev/blah",
+  "pr-manager": "node-a-st-pr-alias",
+  "node-name": "node-a-st",
+  "read-only": false,
+  "discard": "unmap"
+}
diff --git a/tests/qemublocktestdata/xml2json/block-raw-reservations.xml b/tests/qemublocktestdata/xml2json/block-raw-reservations.xml
new file mode 100644 (file)
index 0000000..3ebfe61
--- /dev/null
@@ -0,0 +1,14 @@
+<disk device='disk' type='block'>
+  <driver name='qemu' type='raw'/>
+  <source dev='/dev/blah'>
+    <reservations enabled='yes' managed='yes'/>
+    <privateData>
+      <nodenames>
+        <nodename type='storage' name='node-a-st'/>
+        <nodename type='format' name='node-a-fo'/>
+      </nodenames>
+      <reservations mgralias='node-a-st-pr-alias'/>
+    </privateData>
+  </source>
+  <target dev='vda'/>
+</disk>