From f3e359d66529aada961118c1fce9e963c274e9e1 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Mon, 6 Jan 2014 14:58:59 -0700 Subject: [PATCH] Revert "lxcDomainShutdownFlags: Cleanup @flags usage" This reverts commit aa4619337ccc0b171a3a4d17540da89429243c36. This patch was accidentally pushed prematurely, and has incorrect logic for which shutdown methods to attempt. Signed-off-by: Eric Blake --- src/lxc/lxc_driver.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 7e9aa84294..e598474369 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -2701,8 +2701,7 @@ lxcDomainShutdownFlags(virDomainPtr dom, virDomainObjPtr vm; char *vroot = NULL; int ret = -1; - int rc = 0; - bool useInitctl = false, initctlRequested, signalRequested; + int rc; virCheckFlags(VIR_DOMAIN_SHUTDOWN_INITCTL | VIR_DOMAIN_SHUTDOWN_SIGNAL, -1); @@ -2731,24 +2730,25 @@ lxcDomainShutdownFlags(virDomainPtr dom, (unsigned long long)priv->initpid) < 0) goto cleanup; - initctlRequested = flags & VIR_DOMAIN_SHUTDOWN_INITCTL; - signalRequested = flags & VIR_DOMAIN_SHUTDOWN_SIGNAL; - - if (initctlRequested || !flags) - useInitctl = true; - - if (useInitctl) { - rc = virInitctlSetRunLevel(VIR_INITCTL_RUNLEVEL_POWEROFF, vroot); - if (rc < 0 && !signalRequested) + if (flags == 0 || + (flags & VIR_DOMAIN_SHUTDOWN_INITCTL)) { + if ((rc = virInitctlSetRunLevel(VIR_INITCTL_RUNLEVEL_POWEROFF, + vroot)) < 0) { goto cleanup; - if (rc == 0 && !signalRequested) { + } + if (rc == 0 && flags != 0 && + ((flags & ~VIR_DOMAIN_SHUTDOWN_INITCTL) == 0)) { virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", _("Container does not provide an initctl pipe")); goto cleanup; } + } else { + rc = 0; } - if (rc == 0 && !useInitctl) { + if (rc == 0 && + (flags == 0 || + (flags & VIR_DOMAIN_SHUTDOWN_SIGNAL))) { if (kill(priv->initpid, SIGTERM) < 0 && errno != ESRCH) { virReportSystemError(errno,