qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 0/2] help libvirt know what's up with qga


From: Laszlo Ersek
Subject: [Qemu-devel] [PATCH 0/2] help libvirt know what's up with qga
Date: Thu, 29 May 2014 21:36:39 +0200

In this series I try to implement the ideas that (I believe) were
suggested by Gerd and Amit in
<https://bugzilla.redhat.com/show_bug.cgi?id=1080376>.

When the guest agent exits or dies (disconnects from the virtio-serial
port), the backend (eg. a host-side unix domain socket) doesn't (in
general, can't) reflect it. This lack of info tends to trip up libvirt
in some cases, waiting indefinitely for an agent that doesn't exist.

The series adds two monitor events that report about virtio-serial ports
being opened and closed (for online notification), and extends the
"query-chardev" QMP command's return type with a "frontend_open" bool
(for querying at late libvirt startup).

Admittedly, these two don't report on the same level (frontend vs.
backend), but the association is under libvirt's control, so it should
be fine, and it helps keep the series non-intrusive. (Also known as, "I
have a fleeting chance implementing it, having authored neither chardev
nor virtio-serial".)

The series can be tested with libvirt immediately, as follows:

  1. set up qga as usual

  2. add the following XML element under the /domain element in the
     domain config:

     <qemu:commandline xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
       <qemu:arg value='-global'/>
       <qemu:arg value='virtserialport.report_connstate=true'/>
     </qemu:commandline>

     (libvirt ignores unrecognized events, see
     qemuMonitorJSONIOProcessEvent())

  3. configure libvirtd to log QEMU monitor and agent traffic;
     in "libvirtd.conf", set

     log_filters="1:qemu_monitor_ 1:qemu_agent"
     log_outputs="1:file:/var/log/libvirt/libvirtd.log"

  4. in the guest, start & stop the guest agent, and in lockstep:
     - on the host, issue:
       virsh qemu-monitor-command DOMAIN --pretty \
           '{"execute":"query-chardev"}'

     - on the host, grep the libvirtd log for the new events:
       egrep 'QEMU_MONITOR_RECV_EVENT: .*VSERPORT_(DIS)?CONNECTED' \
           /var/log/libvirt/libvirtd.log

RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1080376

Laszlo Ersek (2):
  virtio-serial: report frontend connection state via monitor
  char: report frontend open/closed state in 'query-chardev'

 qapi-schema.json          |  8 +++++++-
 include/monitor/monitor.h |  2 ++
 hw/char/virtio-console.c  | 20 +++++++++++++++++---
 monitor.c                 |  2 ++
 qemu-char.c               |  2 ++
 docs/qmp/qmp-events.txt   | 34 ++++++++++++++++++++++++++++++++++
 qmp-commands.hx           | 19 ++++++++++++++-----
 7 files changed, 78 insertions(+), 9 deletions(-)

-- 
1.8.3.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]