]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: report useful error failling to destroy domain gracefully
authorGuannan Ren <gren@redhat.com>
Fri, 17 May 2013 14:22:46 +0000 (22:22 +0800)
committerGuannan Ren <gren@redhat.com>
Fri, 17 May 2013 14:22:46 +0000 (22:22 +0800)
Resolves:https://bugzilla.redhat.com/show_bug.cgi?id=927620

 #kill -STOP `pidof qemu-kvm`
 #virsh destroy $guest --graceful
 error: Failed to destroy domain testVM
 error: An error occurred, but the cause is unknown

With --graceful, SIGTERM always is emitted to kill driver
process, but it won't success till burning out waiting time
in case of process being stopped.
But domain destroy without --graceful can work, SIGKILL will
be emitted to the stopped process after 10 secs which always
kills a process even one that is currently stopped.
So report an error after burning out waiting time in this case.

src/qemu/qemu_process.c
src/util/virprocess.c

index 4a7c6127d55cb4ceebac8e4f357da07ec11cb6e5..e5b46799810958848061917468fed0af54c26e2e 100644 (file)
@@ -3930,7 +3930,7 @@ qemuProcessKill(virDomainObjPtr vm, unsigned int flags)
         }
     }
 
-    if ((flags & VIR_QEMU_PROCESS_KILL_NOWAIT)) {
+    if (flags & VIR_QEMU_PROCESS_KILL_NOWAIT) {
         virProcessKill(vm->pid,
                        (flags & VIR_QEMU_PROCESS_KILL_FORCE) ?
                        SIGKILL : SIGTERM);
index 99db00335228a0ff6f5772b63d34222dda0a3ec8..a569406aea0e48f0d0953f4033786bb84d26e073 100644 (file)
@@ -310,8 +310,9 @@ virProcessKillPainfully(pid_t pid, bool force)
         usleep(200 * 1000);
     }
 
-    VIR_DEBUG("Timed out waiting after SIGKILL to process %lld",
-              (long long)pid);
+    virReportSystemError(EBUSY,
+                         _("Failed to terminate process %lld with SIG%s"),
+                         (long long)pid, signame);
 
 cleanup:
     return ret;