struct qemud_driver *driver,
struct qemud_vm *vm);
-static int qemudShutdownVMDaemon(virConnectPtr conn,
- struct qemud_driver *driver,
- struct qemud_vm *vm);
+static void qemudShutdownVMDaemon(virConnectPtr conn,
+ struct qemud_driver *driver,
+ struct qemud_vm *vm);
static int qemudStartNetworkDaemon(virConnectPtr conn,
struct qemud_driver *driver,
struct qemud_vm *next = vm->next;
if (qemudIsActiveVM(vm))
qemudShutdownVMDaemon(NULL, qemu_driver, vm);
+ if (!vm->configFile[0])
+ qemudRemoveInactiveVM(qemu_driver, vm);
vm = next;
}
}
-static int qemudShutdownVMDaemon(virConnectPtr conn ATTRIBUTE_UNUSED,
- struct qemud_driver *driver, struct qemud_vm *vm) {
+static void qemudShutdownVMDaemon(virConnectPtr conn ATTRIBUTE_UNUSED,
+ struct qemud_driver *driver, struct qemud_vm *vm) {
if (!qemudIsActiveVM(vm))
- return 0;
+ return;
qemudLog(QEMUD_INFO, "Shutting down VM '%s'", vm->def->name);
driver->nactivevms--;
driver->ninactivevms++;
-
- if (!vm->configFile[0])
- qemudRemoveInactiveVM(driver, vm);
-
- return 0;
}
static int qemudDispatchVMLog(struct qemud_driver *driver, struct qemud_vm *vm, int fd) {
- if (qemudVMData(driver, vm, fd) < 0)
- if (qemudShutdownVMDaemon(NULL, driver, vm) < 0)
- return -1;
+ if (qemudVMData(driver, vm, fd) < 0) {
+ qemudShutdownVMDaemon(NULL, driver, vm);
+ if (!vm->configFile[0])
+ qemudRemoveInactiveVM(driver, vm);
+ }
return 0;
}
static int qemudDispatchVMFailure(struct qemud_driver *driver, struct qemud_vm *vm,
int fd ATTRIBUTE_UNUSED) {
- if (qemudShutdownVMDaemon(NULL, driver, vm) < 0)
- return -1;
+ qemudShutdownVMDaemon(NULL, driver, vm);
+ if (!vm->configFile[0])
+ qemudRemoveInactiveVM(driver, vm);
return 0;
}
static int qemudDomainDestroy(virDomainPtr dom) {
struct qemud_driver *driver = (struct qemud_driver *)dom->conn->privateData;
struct qemud_vm *vm = qemudFindVMByID(driver, dom->id);
- int ret;
if (!vm) {
qemudReportError(dom->conn, dom, NULL, VIR_ERR_INVALID_DOMAIN,
return -1;
}
- ret = qemudShutdownVMDaemon(dom->conn, driver, vm);
+ qemudShutdownVMDaemon(dom->conn, driver, vm);
+ if (!vm->configFile[0])
+ qemudRemoveInactiveVM(driver, vm);
virFreeDomain(dom->conn, dom);
- return ret;
+ return 0;
}