qemu: report useful error failling to destroy domain gracefully

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.
This commit is contained in:
Guannan Ren 2013-05-17 22:22:46 +08:00
parent 6aa4fc656d
commit 6459af6a43
2 changed files with 4 additions and 3 deletions

View 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);

View 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;