On Tue, Sep 13, 2011 at 17:00:38 -0600, Eric Blake wrote: > On 09/13/2011 10:20 AM, Jiri Denemark wrote: > > Ever since we introduced fake reboot, we call qemuProcessKill as a > > reaction to SHUTDOWN event. Unfortunately, qemu doesn't guarantee it > > flushed all internal buffers before sending SHUTDOWN, in which case > > killing the process forcibly may result in (virtual) disk corruption. > > > > By sending SIGQUIT instead of SIGTERM followed by SIGKILL we tell qemu > > to flush all buffers and exit. Once qemu exits, we will see an EOF on > > monitor connection and tear down the domain. In case qemu ignores > > SIGQUIT or just hangs there, the process stays running but that's not > > any different from a possible hang anytime during the shutdown process > > so I think it's just fine. > > This affects virDomainShutdown, virDomainReboot, and guest-initiated > shutdown, but not virDomainDestroy, right? Yes. > > --- > > src/qemu/qemu_process.c | 21 +++++++++++++++++++-- > > src/qemu/qemu_process.h | 1 + > > 2 files changed, 20 insertions(+), 2 deletions(-) > > > > diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c > > index f8a8475..8a12e2a 100644 > > --- a/src/qemu/qemu_process.c > > +++ b/src/qemu/qemu_process.c > > @@ -445,12 +445,12 @@ qemuProcessHandleShutdown(qemuMonitorPtr mon ATTRIBUTE_UNUSED, > > qemuProcessFakeReboot, > > vm)< 0) { > > VIR_ERROR(_("Failed to create reboot thread, killing domain")); > > - qemuProcessKill(vm); > > + qemuProcessQuit(vm); > > Is this hunk right? If we're that bad off that we can't create a > thread, killing might actually be better. I was thinking that if we can't reboot (because we cannot create the thread), we should just shutdown normally, not kill the domain without giving qemu a chance to flush buffers. Jirka -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list