diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 6884fea8cc..fc0df37e79 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -1378,6 +1378,12 @@ static int lxcDomainStart(virDomainPtr dom) goto cleanup; } + if (virDomainObjIsActive(vm)) { + lxcError(VIR_ERR_OPERATION_INVALID, + "%s", _("Domain is already running")); + goto cleanup; + } + ret = lxcVmStart(dom->conn, driver, vm); if (ret == 0) @@ -1483,6 +1489,12 @@ static int lxcDomainShutdown(virDomainPtr dom) goto cleanup; } + if (!virDomainObjIsActive(vm)) { + lxcError(VIR_ERR_OPERATION_INVALID, + "%s", _("Domain is not running")); + goto cleanup; + } + ret = lxcVmTerminate(driver, vm, 0); event = virDomainEventNewFromObj(vm, VIR_DOMAIN_EVENT_STOPPED, @@ -1662,6 +1674,12 @@ static int lxcDomainDestroy(virDomainPtr dom) goto cleanup; } + if (!virDomainObjIsActive(vm)) { + lxcError(VIR_ERR_OPERATION_INVALID, + "%s", _("Domain is not running")); + goto cleanup; + } + ret = lxcVmTerminate(driver, vm, SIGKILL); event = virDomainEventNewFromObj(vm, VIR_DOMAIN_EVENT_STOPPED,