On 05/31/13 14:36, Eric Blake wrote: > On 05/28/2013 12:34 AM, Gerd Hoffmann wrote: >> Fill unset CharDriverState->filename with the backend name, so >> 'info chardev' will return at least the chardev type. Don't >> touch it in case the chardev init function filled it already, >> like the socket+pty chardevs do for example. >> >> Signed-off-by: Gerd Hoffmann <kra...@redhat.com> >> --- >> qemu-char.c | 3 +++ >> 1 file changed, 3 insertions(+) >> >> diff --git a/qemu-char.c b/qemu-char.c >> index f825294..d04b429 100644 >> --- a/qemu-char.c >> +++ b/qemu-char.c >> @@ -3801,6 +3801,9 @@ ChardevReturn *qmp_chardev_add(const char *id, >> ChardevBackend *backend, >> chr->label = g_strdup(id); >> chr->avail_connections = >> (backend->kind == CHARDEV_BACKEND_KIND_MUX) ? MAX_MUX : 1; >> + if (!chr->filename) { >> + chr->filename = >> g_strdup(ChardevBackendKind_lookup[backend->kind]); >> + } >> QTAILQ_INSERT_TAIL(&chardevs, chr, next); >> return ret; >> } else { >> > > Peter was telling me on IRC that this patch is still broken with regards > to libvirt; I've cc'd him to provide more details... >
Without this patch the returned message for "query-chardev" is: { "return": [ { "filename": "pty:/dev/pts/8", "label": "charserial0" }, { "filename": "unix:/var/lib/libvirt/qemu/qemu-git.monitor,server", "label": "charmonitor" } ], "id": "libvirt-2" } this patch changes it to: { "return": [ { "filename": "pty", "label": "charserial0" }, { "filename": "unix:/var/lib/libvirt/qemu/qemu-git.monitor,server", "label": "charmonitor" } ], "id": "libvirt-2" } It's apparent that some code being executed after the code in this patch fills the actual pty path that was allocated. With it pre-allocated the code ignores it. Libvirt is using the output to gather names of the pty so that they can be used to connect to the console. Peter