[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [Qemu-devel] qemu mainline regression with xen-unstable: unable to start QMP



Eric Blake <eblake@xxxxxxxxxx> writes:

> [adding Markus, as author of the regression]
>
> On 06/04/2015 03:59 PM, Don Slutz wrote:
>> On 06/04/15 11:04, Fabio Fantoni wrote:
>>> Today after trying xen-unstable build (tested many hours) of some days
>>> ago I tried update qemu to latest development version (from git master
>>> commit 6fa6b312765f698dc81b2c30e7eeb9683804a05b) and seems that there is
>>> a regression:
>>>> xl create /etc/xen/W7.cfg
>>>> Parsing config from /etc/xen/W7.cfg
>>>> libxl: error: libxl_qmp.c:287:qmp_handle_error_response: received an
>>>> error message from QMP server: QMP input object member 'id' is unexpected
>>>> libxl: error: libxl_qmp.c:715:libxl__qmp_initialize: Failed to connect
>>>> to QMP
>>>
>> 
>> This is caused by:
>> 
>> commit 65207c59d99f2260c5f1d3b9c491146616a522aa
>> Author: Markus Armbruster <armbru@xxxxxxxxxx>
>> Date:   Thu Mar 5 14:35:26 2015 +0100
>> 
>>     monitor: Drop broken, unused asynchronous command interface

Yes.  I screwed up.

>> The patch:
>> 
>>>From 1b0221078353870fe530e49de158cae205f9bce5 Mon Sep 17 00:00:00 2001
>> From: Don Slutz <dslutz@xxxxxxxxxxx>
>> Date: Thu, 4 Jun 2015 17:04:42 -0400
>> Subject: [PATCH 01/14] monitor: Allow Xen's (broken) usage of asynchronous
>>  command interface.
>> 
>> commit 65207c59d99f2260c5f1d3b9c491146616a522aa
>> Author: Markus Armbruster <armbru@xxxxxxxxxx>
>> Date:   Thu Mar 5 14:35:26 2015 +0100
>> 
>>     monitor: Drop broken, unused asynchronous command interface
>> 
>> Breaks Xen.  Add a hack un unbreak it.
>
> s/un /to /
>
>> 
>> Xen is only doing synchronous commands, but is including an id.
>
> QMP also uses id, but apparently removes it up front before calling into
> this function; so another fix would be having xen remove it up front.

I don't think so:

    {"QMP": {"version": {"qemu": {"micro": 50, "minor": 3, "major": 2}, 
"package": ""}, "capabilities": []}}
    { "execute": "qmp_capabilities" }
    {"return": {}}
    {"execute": "system_reset", "id": "1"}
    {"error": {"class": "GenericError", "desc": "QMP input object member 'id' 
is unexpected"}}

>> Signed-off-by: Don Slutz <dslutz@xxxxxxxxxxx>
>> ---
>>  monitor.c | 9 +++++++++
>>  1 file changed, 9 insertions(+)
>> 
>> diff --git a/monitor.c b/monitor.c
>> index c7baa91..e9a0747 100644
>> --- a/monitor.c
>> +++ b/monitor.c
>> @@ -4955,6 +4955,15 @@ static QDict *qmp_check_input_obj(QObject
>> *input_obj, Error **errp)
>>                            "arguments", "object");
>>                  return NULL;
>>              }
>> +        } else if (!strcmp(arg_name, "id")) {
>> +            /*
>> +             * Fixup Xen's usage. Just ignore the "id". See point #5
>> +             * above.  This was an attempt at an asynchronous
>> +             * command interface.  However commit
>> +             * 65207c59d99f2260c5f1d3b9c491146616a522aa is
>> +             * wrong. Xen does not expect an error when it passes in
>> +             * "id":1, so just continue to ignore it.
>> +             */
>
> The comment is a bit verbose, particularly since 'id' is a
> well-established usage pattern in QMP.  Also, we don't need to call out
> why it changed in the comment here, the commit message is sufficient for
> that.

Yes.  I'll post a patch with a more suitable comment and commit message.

>>          } else {
>>              error_set(errp, QERR_QMP_EXTRA_MEMBER, arg_name);
>>              return NULL;
>> 

I apologize for the mess I made, and my slow reply (offline since
Wednesday night).

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.