}
-static void
+static int
qemuDomainRemoveControllerDevice(virQEMUDriverPtr driver,
virDomainObjPtr vm,
virDomainControllerDefPtr controller)
qemuDomainReleaseDeviceAddress(vm, &controller->info, NULL);
virDomainControllerDefFree(controller);
+ return 0;
}
qemuDomainReAttachHostSCSIDevices(driver, vm->def->name, &hostdev, 1);
}
-static void
+static int
qemuDomainRemoveHostDevice(virQEMUDriverPtr driver,
virDomainObjPtr vm,
virDomainHostdevDefPtr hostdev)
virDomainNetDefFree(net);
}
virObjectUnref(cfg);
+ return 0;
}
if (virDomainNetGetActualType(net) == VIR_DOMAIN_NET_TYPE_HOSTDEV) {
/* this function handles all hostdev and netdev cleanup */
- qemuDomainRemoveHostDevice(driver, vm, virDomainNetGetActualHostdev(net));
- ret = 0;
+ ret = qemuDomainRemoveHostDevice(driver, vm,
+ virDomainNetGetActualHostdev(net));
goto cleanup;
}
rc = qemuDomainWaitForDeviceRemoval(vm);
if (rc == 0 || rc == 1)
- qemuDomainRemoveControllerDevice(driver, vm, detach);
-
- ret = 0;
+ ret = qemuDomainRemoveControllerDevice(driver, vm, detach);
+ else
+ ret = 0;
cleanup:
qemuDomainResetDeviceRemoval(vm);
} else {
int rc = qemuDomainWaitForDeviceRemoval(vm);
if (rc == 0 || rc == 1)
- qemuDomainRemoveHostDevice(driver, vm, detach);
+ ret = qemuDomainRemoveHostDevice(driver, vm, detach);
}
qemuDomainResetDeviceRemoval(vm);