From dfd300a71d30ade311eafba5f106b967662bc615 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Wed, 1 Nov 2017 10:41:55 +0100 Subject: [PATCH] qemu: command: Move disk index validation closer to usage The disk index validation is used only in very specific cases and does not need to be performed otherwise. Move it out of the global check into the usage place. --- src/qemu/qemu_command.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 3a41e918aa..58de763269 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1468,15 +1468,8 @@ qemuBuildDriveSourceStr(virDomainDiskDefPtr disk, static int qemuBuildDriveStrValidate(virDomainDiskDefPtr disk, virQEMUCapsPtr qemuCaps, - const char *bus, - int idx) + const char *bus) { - if (idx < 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("unsupported disk type '%s'"), disk->dst); - return -1; - } - switch (disk->bus) { case VIR_DOMAIN_DISK_BUS_SCSI: if (disk->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE) { @@ -1638,10 +1631,9 @@ qemuBuildDriveStr(virDomainDiskDefPtr disk, const char *bus = virDomainDiskQEMUBusTypeToString(disk->bus); const char *trans = virDomainDiskGeometryTransTypeToString(disk->geometry.trans); - int idx = virDiskNameToIndex(disk->dst); bool emitDeviceSyntax = qemuDiskBusNeedsDeviceArg(disk->bus); - if (qemuBuildDriveStrValidate(disk, qemuCaps, bus, idx) < 0) + if (qemuBuildDriveStrValidate(disk, qemuCaps, bus) < 0) goto error; if (qemuBuildDriveSourceStr(disk, cfg, &opt, qemuCaps) < 0) @@ -1671,6 +1663,13 @@ qemuBuildDriveStr(virDomainDiskDefPtr disk, virBufferAsprintf(&opt, ",id=%s", drivealias); VIR_FREE(drivealias); } else { + int idx = virDiskNameToIndex(disk->dst); + + if (idx < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("unsupported disk type '%s'"), disk->dst); + goto error; + } virBufferAsprintf(&opt, ",index=%d", idx); } if (bootable &&