[PATCH v2 2/4] qemu: capabilities: add QEMU_CAPS_VIRTFS_MULTIDEVS

Ján Tomko jtomko at redhat.com
Fri Mar 27 17:11:57 UTC 2020


On a Friday in 2020, Christian Schoenebeck wrote:
>The QEMU 9pfs 'multidevs' option exists since QEMU 4.2, so just
>set this capability based on that QEMU version.
>
>Signed-off-by: Christian Schoenebeck <qemu_oss at crudebyte.com>
>---
> src/qemu/qemu_capabilities.c                      | 5 +++++
> src/qemu/qemu_capabilities.h                      | 1 +
> tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml  | 1 +
> tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml | 1 +
> tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml  | 1 +
> 5 files changed, 9 insertions(+)
>
>diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
>index a95a60c36a..68b6e166e9 100644
>--- a/src/qemu/qemu_capabilities.c
>+++ b/src/qemu/qemu_capabilities.c
>@@ -567,6 +567,7 @@ VIR_ENUM_IMPL(virQEMUCaps,
>               "query-named-block-nodes.flat",
>               "blockdev-snapshot.allow-write-only-overlay",
>               "blockdev-reopen",
>+              "virtfs-multidevs",
>     );
>
>
>@@ -4837,6 +4838,10 @@ virQEMUCapsInitQMPVersionCaps(virQEMUCapsPtr qemuCaps)
>         ARCH_IS_PPC64(qemuCaps->arch)) {
>         virQEMUCapsSet(qemuCaps, QEMU_CAPS_MACHINE_PSERIES_MAX_CPU_COMPAT);
>     }
>+
>+    /* -virtfs multidevs option is supported since QEMU 4.2 */
>+    if (qemuCaps->version >= 4002000)
>+        virQEMUCapsSet(qemuCaps, QEMU_CAPS_VIRTFS_MULTIDEVS);
> }

The preferred way is to set the capabilities based on what QEMU actually
knows - that way it works correctly even on newer QEMUs with the feature
compiled out.

This option shows up in the output of 'query-command-line-options',
so all that's needed is adding it to the correct array:

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 68b6e166e9..9402581a9d 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -3157,6 +3157,7 @@ static struct virQEMUCapsCommandLineProps virQEMUCapsCommandLine[] = {
      { "chardev", "fd", QEMU_CAPS_CHARDEV_FD_PASS },
      { "overcommit", NULL, QEMU_CAPS_OVERCOMMIT },
      { "smp-opts", "dies", QEMU_CAPS_SMP_DIES },
+    { "virtfs", "multidevs", QEMU_CAPS_VIRTFS_MULTIDEVS },
  };

  static int

>
>
>diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
>index f0961e273c..a6025312be 100644
>--- a/src/qemu/qemu_capabilities.h
>+++ b/src/qemu/qemu_capabilities.h
>@@ -548,6 +548,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */
>     QEMU_CAPS_QMP_QUERY_NAMED_BLOCK_NODES_FLAT, /* query-named-block-nodes supports the 'flat' option */
>     QEMU_CAPS_BLOCKDEV_SNAPSHOT_ALLOW_WRITE_ONLY, /* blockdev-snapshot has the 'allow-write-only-overlay' feature */
>     QEMU_CAPS_BLOCKDEV_REOPEN, /* 'blockdev-reopen' qmp command is supported */
>+    QEMU_CAPS_VIRTFS_MULTIDEVS, /* -virtfs multidevs supported by virtio-9p */

The brief version should be enough:

/* virtfs.multidevs */

Jano
>
>     QEMU_CAPS_LAST /* this must always be the last item */
> } virQEMUCapsFlags;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20200327/b2a384a4/attachment-0001.sig>


More information about the libvir-list mailing list