1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-07 17:28:15 +00:00

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.
This commit is contained in:
Peter Krempa 2017-11-01 10:41:55 +01:00
parent b60ce7b122
commit dfd300a71d

View File

@ -1468,15 +1468,8 @@ qemuBuildDriveSourceStr(virDomainDiskDefPtr disk,
static int static int
qemuBuildDriveStrValidate(virDomainDiskDefPtr disk, qemuBuildDriveStrValidate(virDomainDiskDefPtr disk,
virQEMUCapsPtr qemuCaps, virQEMUCapsPtr qemuCaps,
const char *bus, const char *bus)
int idx)
{ {
if (idx < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("unsupported disk type '%s'"), disk->dst);
return -1;
}
switch (disk->bus) { switch (disk->bus) {
case VIR_DOMAIN_DISK_BUS_SCSI: case VIR_DOMAIN_DISK_BUS_SCSI:
if (disk->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE) { 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 *bus = virDomainDiskQEMUBusTypeToString(disk->bus);
const char *trans = const char *trans =
virDomainDiskGeometryTransTypeToString(disk->geometry.trans); virDomainDiskGeometryTransTypeToString(disk->geometry.trans);
int idx = virDiskNameToIndex(disk->dst);
bool emitDeviceSyntax = qemuDiskBusNeedsDeviceArg(disk->bus); bool emitDeviceSyntax = qemuDiskBusNeedsDeviceArg(disk->bus);
if (qemuBuildDriveStrValidate(disk, qemuCaps, bus, idx) < 0) if (qemuBuildDriveStrValidate(disk, qemuCaps, bus) < 0)
goto error; goto error;
if (qemuBuildDriveSourceStr(disk, cfg, &opt, qemuCaps) < 0) if (qemuBuildDriveSourceStr(disk, cfg, &opt, qemuCaps) < 0)
@ -1671,6 +1663,13 @@ qemuBuildDriveStr(virDomainDiskDefPtr disk,
virBufferAsprintf(&opt, ",id=%s", drivealias); virBufferAsprintf(&opt, ",id=%s", drivealias);
VIR_FREE(drivealias); VIR_FREE(drivealias);
} else { } 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); virBufferAsprintf(&opt, ",index=%d", idx);
} }
if (bootable && if (bootable &&