[libvirt] [PATCH REPOST 8/9] qemu: Introduce qemuBuildFSDevCommandLine
Cole Robinson
crobinso at redhat.com
Thu Mar 10 23:18:26 UTC 2016
On 03/08/2016 02:03 PM, John Ferlan wrote:
> Add new function to manage adding the -fsdev options to the
> command line removing that task from the mainline qemuBuildCommandLine.
>
> Since both qemuBuildFSStr and qemuBuildFSDevStr are local, make them
> static and fix their prototypes to use the const virDomainDef as well.
> Make some minor formatting changes for long lines.
>
> Signed-off-by: John Ferlan <jferlan at redhat.com>
> ---
> src/qemu/qemu_command.c | 74 ++++++++++++++++++++++++++++++-------------------
> src/qemu/qemu_command.h | 6 +---
> 2 files changed, 46 insertions(+), 34 deletions(-)
>
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index 372f84f..caf6f37 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -1928,8 +1928,9 @@ qemuBuildDiskDriveCommandLine(virCommandPtr cmd,
> }
>
>
> -char *qemuBuildFSStr(virDomainFSDefPtr fs,
> - virQEMUCapsPtr qemuCaps ATTRIBUTE_UNUSED)
> +static char *
> +qemuBuildFSStr(virDomainFSDefPtr fs,
> + virQEMUCapsPtr qemuCaps)
> {
> virBuffer opt = VIR_BUFFER_INITIALIZER;
> const char *driver = qemuDomainFSDriverTypeToString(fs->fsdriver);
> @@ -2002,8 +2003,8 @@ char *qemuBuildFSStr(virDomainFSDefPtr fs,
> }
>
>
> -char *
> -qemuBuildFSDevStr(virDomainDefPtr def,
> +static char *
> +qemuBuildFSDevStr(const virDomainDef *def,
> virDomainFSDefPtr fs,
> virQEMUCapsPtr qemuCaps)
> {
> @@ -2021,7 +2022,8 @@ qemuBuildFSDevStr(virDomainDefPtr def,
> virBufferAddLit(&opt, "virtio-9p-pci");
>
> virBufferAsprintf(&opt, ",id=%s", fs->info.alias);
> - virBufferAsprintf(&opt, ",fsdev=%s%s", QEMU_FSDEV_HOST_PREFIX, fs->info.alias);
> + virBufferAsprintf(&opt, ",fsdev=%s%s",
> + QEMU_FSDEV_HOST_PREFIX, fs->info.alias);
> virBufferAsprintf(&opt, ",mount_tag=%s", fs->dst);
>
> if (qemuBuildDeviceAddressStr(&opt, def, &fs->info, qemuCaps) < 0)
> @@ -2039,6 +2041,42 @@ qemuBuildFSDevStr(virDomainDefPtr def,
>
>
> static int
> +qemuBuildFSDevCommandLine(virCommandPtr cmd,
> + const virDomainDef *def,
> + virQEMUCapsPtr qemuCaps)
> +{
> + size_t i;
> +
> + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_FSDEV)) {
> + for (i = 0; i < def->nfss; i++) {
> + char *optstr;
> + virDomainFSDefPtr fs = def->fss[i];
> +
> + virCommandAddArg(cmd, "-fsdev");
> + if (!(optstr = qemuBuildFSStr(fs, qemuCaps)))
> + return -1;
> + virCommandAddArg(cmd, optstr);
> + VIR_FREE(optstr);
> +
> + virCommandAddArg(cmd, "-device");
> + if (!(optstr = qemuBuildFSDevStr(def, fs, qemuCaps)))
> + return -1;
> + virCommandAddArg(cmd, optstr);
> + VIR_FREE(optstr);
> + }
> + } else {
> + if (def->nfss) {
> + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> + _("filesystem passthrough not supported by this QEMU"));
> + return -1;
> + }
> + }
> +
Can you do the (!QEMU_CAPS_FSDEV && def->nfss) return -1; check up front, so
the logic doesn't need to be indented?
ACK with that if you agree
- Cole
More information about the libvir-list
mailing list