
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