[libvirt] [PATCH] qemu: Adapt to new log format
Michal Privoznik
mprivozn at redhat.com
Sun Dec 30 11:22:06 UTC 2012
On 30.12.2012 11:56, Osier Yang wrote:
> On 2012年12月30日 18:26, Michal Privoznik wrote:
>> On 30.12.2012 10:25, Osier Yang wrote:
>>> On 2012年12月29日 17:09, Michal Privoznik wrote:
>>>> Since 586502189edf9fd0f89a83de96717a2ea826fdb0 qemu commit, the log
>>>> lines reporting chardev's path has changed from:
>>>>
>>>> $ ./x86_64-softmmu/qemu-system-x86_64 -serial pty -serial pty -monitor
>>>> pty
>>>> char device redirected to /dev/pts/5
>>>> char device redirected to /dev/pts/6
>>>> char device redirected to /dev/pts/7
>>>>
>>>> to:
>>>>
>>>> $ ./x86_64-softmmu/qemu-system-x86_64 -serial pty -serial pty -monitor
>>>> pty
>>>> char device compat_monitor0 redirected to /dev/pts/5
>>>> char device serial0 redirected to /dev/pts/6
>>>> char device serial1 redirected to /dev/pts/7
>>>>
>>>> However, with current code we are not prepared for such change, which
>>>> results in us being unable to start any domain.
>>>> ---
>>>> src/qemu/qemu_process.c | 33 +++++++++++++++++++++++++++++----
>>>> 1 file changed, 29 insertions(+), 4 deletions(-)
>>>>
>>>> diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
>>>> index eac6553..29bd082 100644
>>>> --- a/src/qemu/qemu_process.c
>>>> +++ b/src/qemu/qemu_process.c
>>>> @@ -1431,22 +1431,43 @@ cleanup:
>>>> *
>>>> * char device redirected to /dev/pts/3
>>>> *
>>>> + * However, since 1.4 the line we are looking for has changed to:
>>>> + *
>>>> + * char device<alias> redirected to /some/path
>>>> + *
>>>> * Returns -1 for error, 0 success, 1 continue reading
>>>> */
>>>> static int
>>>> qemuProcessExtractTTYPath(const char *haystack,
>>>> size_t *offset,
>>>> + const char *alias,
>>>> char **path)
>>>> {
>>>> - static const char needle[] = "char device redirected to";
>>>> - char *tmp, *dev;
>>>> + static const char *needle[] = {"char device", "redirected to"};
>>>> + const char *tmp, *dev;
>>>>
>>>> VIR_FREE(*path);
>>>> /* First look for our magic string */
>>>> - if (!(tmp = strstr(haystack + *offset, needle))) {
>>>> + if (!(tmp = strstr(haystack + *offset, needle[0])))
>>>> return 1;
>>>> +
>>>> + tmp += strlen(needle[0]);
>>>> + virSkipSpaces(&tmp);
>>>> +
>>>> + if (STRPREFIX(tmp, "char")) {
>>>
>>> I don't see why it's the new style with "char" here with regard
>>> to the new output string like "char device serial1 redirected
>>> to /dev/pts/7". Should it be below instead?
>>>
>>> if (!STRPREFIX(tmp, "redirected"))
>>> or
>>> if (STRPREFIX(tmp, alias))
>>>
>>
>> I should have documented that. If you take look at
>> qemuBuildChrChardevStr() you can see, that all char devices IDs are
>> constructed as "id=char%s", where %s is substituted device alias. Hence
>> qemu sees 'charalias0' instead of bare 'alias0'. Therefore we should
>> check for 'char' prefix.
>>
>
> Oh, I missed that, agreed with you that better to add a comment
> for that, ACK with the comment added.
>
> Osier
>
Added and pushed. Thanks.
Michal
More information about the libvir-list
mailing list