qemu: Use log output for pty assignment if 'info chardev' is unavailable

qemudFindCharDevicePTYsMonitor reports an error if 'info chardev' didn't
provide information for a requested device, even if the log output parsing
had found the pty path for that device. This makes pty assignment fail for
older QEMU/KVM versions. For example KVM 72 on Debian doesn't support
'info chardev', so qemuMonitorTextGetPtyPaths cannot parse any useful
information and the hash for device-id-to-pty-path mapping stays empty.

Make qemudFindCharDevicePTYsMonitor report an error only if the log output
parsing and the 'info chardev' parsing failed to provide the pty path.
This commit is contained in:
Matthias Bolte 2010-01-16 18:32:56 +01:00
parent c2c4d51b2f
commit a0356bcc41

View File

@ -1428,9 +1428,17 @@ qemudFindCharDevicePTYsMonitor(virConnectPtr conn,
\
const char *path = (const char *) virHashLookup(paths, id); \
if (path == NULL) { \
qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,\
_("no assigned pty for device %s"), id); \
return -1; \
if (chr->data.file.path == NULL) { \
/* neither the log output nor 'info chardev' had a */ \
/* pty path for this chardev, report an error */ \
qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR, \
_("no assigned pty for device %s"), id); \
return -1; \
} else { \
/* 'info chardev' had no pty path for this chardev, */\
/* but the log output had, so we're fine */ \
continue; \
} \
} \
\
VIR_FREE(chr->data.file.path); \