[libvirt] [PATCH] Fix regression from "Avoid polling on FDs with no events"

After the mentioned patch was applied, I noticed that shutting down a kvm guest from inside (i.e. poweroff) caused the guest to shutdown, but not removed from the list of active guests. DanB pointed out that the problem is that the virEventAddHandle() call in the qemu driver was asking to watch for 0 events, not HANGUP | ERROR as it should. Add these events so that shutdown works again. Signed-off-by: Chris Lalancette <clalance@redhat.com> --- src/qemu_driver.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/src/qemu_driver.c b/src/qemu_driver.c index 683fe20..996bfff 100644 --- a/src/qemu_driver.c +++ b/src/qemu_driver.c @@ -979,7 +979,8 @@ qemudOpenMonitorCommon(virConnectPtr conn, if (ret != 0) return ret; - if ((vm->monitorWatch = virEventAddHandle(vm->monitor, 0, + if ((vm->monitorWatch = virEventAddHandle(vm->monitor, + VIR_EVENT_HANDLE_HANGUP | VIR_EVENT_HANDLE_ERROR, qemudDispatchVMEvent, driver, NULL)) < 0) return -1; -- 1.6.0.6

On Thu, Sep 10, 2009 at 11:50:36AM +0200, Chris Lalancette wrote:
After the mentioned patch was applied, I noticed that shutting down a kvm guest from inside (i.e. poweroff) caused the guest to shutdown, but not removed from the list of active guests. DanB pointed out that the problem is that the virEventAddHandle() call in the qemu driver was asking to watch for 0 events, not HANGUP | ERROR as it should. Add these events so that shutdown works again.
Signed-off-by: Chris Lalancette <clalance@redhat.com> --- src/qemu_driver.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/src/qemu_driver.c b/src/qemu_driver.c index 683fe20..996bfff 100644 --- a/src/qemu_driver.c +++ b/src/qemu_driver.c @@ -979,7 +979,8 @@ qemudOpenMonitorCommon(virConnectPtr conn, if (ret != 0) return ret;
- if ((vm->monitorWatch = virEventAddHandle(vm->monitor, 0, + if ((vm->monitorWatch = virEventAddHandle(vm->monitor, + VIR_EVENT_HANDLE_HANGUP | VIR_EVENT_HANDLE_ERROR, qemudDispatchVMEvent, driver, NULL)) < 0) return -1;
ACK Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|

Daniel P. Berrange wrote:
On Thu, Sep 10, 2009 at 11:50:36AM +0200, Chris Lalancette wrote:
After the mentioned patch was applied, I noticed that shutting down a kvm guest from inside (i.e. poweroff) caused the guest to shutdown, but not removed from the list of active guests. DanB pointed out that the problem is that the virEventAddHandle() call in the qemu driver was asking to watch for 0 events, not HANGUP | ERROR as it should. Add these events so that shutdown works again.
Thanks, pushed. -- Chris Lalancette
participants (2)
-
Chris Lalancette
-
Daniel P. Berrange