[libvirt] [PATCH] conf: Parse virtio-crypto in the domain XML

Martin Kletzander mkletzan at redhat.com
Mon Jan 9 08:44:41 UTC 2017


On Mon, Jan 09, 2017 at 10:15:25AM +0800, Longpeng(Mike) wrote:
>As virtio-crypto has been supported in QEMU 2.9 and
>the frontend driver has been merged in linux 4.10,
>so it's necessary to support virtio-crypto in domain
>XML.
>
>This patch parse the domain XML with virtio-crypto
>support, the virtio-crypto XML looks like this:
>
>    <crypto model='virtio'>
>        <backend type='builtin' queues='2'/>
>    </crypto>
>
>Signed-off-by: Longpeng(Mike) <longpeng2 at huawei.com>
>---
> src/conf/domain_conf.c         | 212 +++++++++++++++++++++++++++++++++++++++++
> src/conf/domain_conf.h         |  32 +++++++
> src/qemu/qemu_alias.c          |  20 ++++
> src/qemu/qemu_alias.h          |   4 +
> src/qemu/qemu_capabilities.c   |   4 +
> src/qemu/qemu_capabilities.h   |   2 +
> src/qemu/qemu_command.c        | 129 +++++++++++++++++++++++++
> src/qemu/qemu_command.h        |   4 +
> src/qemu/qemu_domain_address.c |  17 ++++
> src/qemu/qemu_driver.c         |   6 ++
> src/qemu/qemu_hotplug.c        |   1 +
> 11 files changed, 431 insertions(+)
>

No tests, no documentation, no schema => no acks.

The patch should be split into at least two parts (conf, schema,
qemuxml2xmltest and docs in one; then hypervisor functionality and tests
in the second one).

Also I see no hunk adding anything to qemuDomainAssignDevicePCISlots()
or similar.

>diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
>index 9f7b906..fcfccd5 100644
>--- a/src/conf/domain_conf.c
>+++ b/src/conf/domain_conf.c
>@@ -237,6 +237,7 @@ VIR_ENUM_IMPL(virDomainDevice, VIR_DOMAIN_DEVICE_LAST,
>               "memballoon",
>               "nvram",
>               "rng",
>+              "crypto",

Why are you adding this in a random place rather than at the end?  That
could be fixed in most of the hunks.

>@@ -21590,6 +21749,51 @@ virDomainRNGDefFree(virDomainRNGDefPtr def)
>
>
> static int
>+virDomainCryptoDefFormat(virBufferPtr buf,
>+                         virDomainCryptoDefPtr def,
>+                         unsigned int flags)
>+{
>+    const char *model = virDomainCryptoModelTypeToString(def->model);
>+    const char *backend = virDomainCryptoBackendTypeToString(def->backend);
>+
>+    virBufferAsprintf(buf, "<crypto model='%s'>\n", model);
>+    virBufferAdjustIndent(buf, 2);
>+    virBufferAsprintf(buf, "<backend type='%s'", backend);
>+
>+    switch ((virDomainCryptoBackend) def->backend) {
>+    case VIR_DOMAIN_CRYPTO_BACKEND_BUILTIN:
>+        if (def->queues)
>+            virBufferAsprintf(buf, " queues='%u'", def->queues);
>+
>+        virBufferAddLit(buf, "/>\n");
>+        break;
>+
>+    case VIR_DOMAIN_CRYPTO_BACKEND_LAST:
>+        break;
>+    }
>+
>+    if (virDomainDeviceInfoNeedsFormat(&def->info, flags)) {

It should always have an address, this is not an old device with
back-compat problems.

>diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
>index 2c0b29d..b1b718b 100644
>--- a/src/qemu/qemu_capabilities.c
>+++ b/src/qemu/qemu_capabilities.c
>@@ -337,6 +337,8 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST,
>               "drive-detect-zeroes",
>
>               "tls-creds-x509", /* 230 */
>+              "cryptodev-backend-builtin",
>+              "virtio-crypto",
>     );
>
>
>diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
>index affb639..98cb817 100644
>--- a/src/qemu/qemu_capabilities.h
>+++ b/src/qemu/qemu_capabilities.h
>@@ -370,6 +370,8 @@ typedef enum {
>
>     /* 230 */
>     QEMU_CAPS_OBJECT_TLS_CREDS_X509, /* -object tls-creds-x509 */
>+    QEMU_CAPS_OBJECT_CRYPTO_BUILTIN,
>+    QEMU_CAPS_DEVICE_VIRTIO_CRYPTO,
>

Base your patch on master, not on some old, private, branch.  Also see
how every capability has a nice comment even if it's very trivial.  It
can help sometimes.

I haven't tested it or read it thoroughly, but the rest looks
reasonable.

Martin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20170109/717e8bd7/attachment-0001.sig>


More information about the libvir-list mailing list