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