goto error;
}
- if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DEVICE)) {
- if (qemuAssignDeviceDiskAlias(vm->def, disk, priv->qemuCaps) < 0)
- goto error;
- if (!(devstr = qemuBuildDriveDevStr(vm->def, disk, 0, priv->qemuCaps)))
- goto error;
- }
-
- if (!(drivestr = qemuBuildDriveStr(conn, disk, false, priv->qemuCaps)))
- goto error;
-
+ /* Let's make sure our disk has a controller defined and loaded
+ * before trying add the disk. The controller the disk is going
+ * to use must exist before a qemu command line string is generated.
+ */
for (i = 0; i <= disk->info.addr.drive.controller; i++) {
cont = qemuDomainFindOrCreateSCSIDiskController(driver, vm, i);
if (!cont)
and hence the above loop must iterate at least once. */
sa_assert(cont);
+ if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DEVICE)) {
+ if (qemuAssignDeviceDiskAlias(vm->def, disk, priv->qemuCaps) < 0)
+ goto error;
+ if (!(devstr = qemuBuildDriveDevStr(vm->def, disk, 0, priv->qemuCaps)))
+ goto error;
+ }
+
+ if (!(drivestr = qemuBuildDriveStr(conn, disk, false, priv->qemuCaps)))
+ goto error;
+
if (VIR_REALLOC_N(vm->def->disks, vm->def->ndisks+1) < 0)
goto error;