[libvirt] [PATCH 08/11] qemu: process: Refresh virtio channel guest state when connecting to mon
Jiri Denemark
jdenemar at redhat.com
Thu Nov 20 22:03:34 UTC 2014
On Thu, Nov 20, 2014 at 22:22:56 +0100, Jiri Denemark wrote:
> On Wed, Nov 19, 2014 at 11:23:21 +0100, Peter Krempa wrote:
> > Use data provided by "query-chardev" to refresh the guest frontend state
> > of virtio channels.
> > ---
> > src/qemu/qemu_process.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++--
> > 1 file changed, 66 insertions(+), 2 deletions(-)
> >
> > diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
> > index f19963c..3c3ff66 100644
> > --- a/src/qemu/qemu_process.c
> > +++ b/src/qemu/qemu_process.c
> > @@ -2068,6 +2068,61 @@ qemuProcessFindCharDevicePTYs(virDomainObjPtr vm,
> >
> >
> > static int
> > +qemuProcessRefreshChannelVirtioState(virDomainObjPtr vm,
> > + virHashTablePtr info)
> > +{
> > + size_t i;
> > + qemuMonitorChardevInfoPtr entry;
> > + char id[32];
> > +
> > + for (i = 0; i < vm->def->nchannels; i++) {
> > + virDomainChrDefPtr chr = vm->def->channels[i];
> > + if (chr->targetType == VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO) {
> > + if (snprintf(id, sizeof(id), "char%s",
> > + chr->info.alias) >= sizeof(id)) {
> > + virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> > + _("failed to format device alias "
> > + "for PTY retrieval"));
> > + return -1;
> > + }
> > +
> > + /* port state not reported */
> > + if (!(entry = virHashLookup(info, id)))
> > + continue;
But of course, this should be changed to
if (!(entry = virHashLookup(info, id)) ||
!entry->state)
in case you decide to store all devices in the hash as I suggested in my
review to 7/11.
Jirka
More information about the libvir-list
mailing list