From f96e97737b1bf92d8e3153a238682a35ed61aea3 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Fri, 7 Jul 2017 14:41:25 +0200 Subject: [PATCH] qemu: command: Call qemuGetDriveSourceProps only if necessary Add logic which will call qemuGetDriveSourceProps only in cases where we need the JSON representation. This will allow qemuGetDriveSourceProps to generate the JSON representation for all possible disk sources. --- src/qemu/qemu_command.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 8d73934d00..b69ff4ae5d 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1436,6 +1436,28 @@ qemuDiskBusNeedsDeviceArg(int bus) } +/** + * qemuDiskSourceNeedsProps: + * @src: disk source + * + * Returns true, if the disk source needs to be generated from the JSON + * representation. Otherwise, the disk source should be represented using + * the legacy representation. + */ +static bool +qemuDiskSourceNeedsProps(virStorageSourcePtr src) +{ + int actualType = virStorageSourceGetActualType(src); + + if (actualType == VIR_STORAGE_TYPE_NETWORK && + src->protocol == VIR_STORAGE_NET_PROTOCOL_GLUSTER && + src->nhosts > 1) + return true; + + return false; +} + + static int qemuBuildDriveSourceStr(virDomainDiskDefPtr disk, virQEMUDriverConfigPtr cfg, @@ -1450,7 +1472,8 @@ qemuBuildDriveSourceStr(virDomainDiskDefPtr disk, char *source = NULL; int ret = -1; - if (qemuGetDriveSourceProps(disk->src, &srcprops) < 0) + if (qemuDiskSourceNeedsProps(disk->src) && + qemuGetDriveSourceProps(disk->src, &srcprops) < 0) goto cleanup; if (!srcprops && -- GitLab