From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:53600) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SStS7-0007I2-AW for qemu-devel@nongnu.org; Fri, 11 May 2012 13:16:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SStS4-0006bC-RY for qemu-devel@nongnu.org; Fri, 11 May 2012 13:16:26 -0400 Received: from cantor2.suse.de ([195.135.220.15]:49380 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SStS4-0006ay-Hk for qemu-devel@nongnu.org; Fri, 11 May 2012 13:16:24 -0400 Message-ID: <4FAD4962.4090705@suse.de> Date: Fri, 11 May 2012 19:16:18 +0200 From: =?ISO-8859-1?Q?Andreas_F=E4rber?= MIME-Version: 1.0 References: <1335558083-26196-1-git-send-email-mdroth@linux.vnet.ibm.com> <1335558083-26196-3-git-send-email-mdroth@linux.vnet.ibm.com> <20120511132233.6732a013@doriath.home> <20120511170447.GA28865@illuin> In-Reply-To: <20120511170447.GA28865@illuin> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH 2/7] qapi: QMP input visitor, handle floats parsed as ints List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Michael Roth Cc: pbonzini@redhat.com, aliguori@us.ibm.com, qemu-devel@nongnu.org, Luiz Capitulino Am 11.05.2012 19:04, schrieb Michael Roth: > On Fri, May 11, 2012 at 01:22:33PM -0300, Luiz Capitulino wrote: >> On Fri, 27 Apr 2012 15:21:18 -0500 >> Michael Roth wrote: >> >>> JSON numbers can be interpreted as either integers or floating point >>> values depending on their representation. As a result, QMP input visi= tor >>> might visit a QInt when it was expecting a QFloat, so add handling to >>> account for this. >>> >>> Signed-off-by: Michael Roth >>> --- >>> qapi/qmp-input-visitor.c | 9 +++++++-- >>> 1 files changed, 7 insertions(+), 2 deletions(-) >>> >>> diff --git a/qapi/qmp-input-visitor.c b/qapi/qmp-input-visitor.c >>> index 4cdc47d..bc91134 100644 >>> --- a/qapi/qmp-input-visitor.c >>> +++ b/qapi/qmp-input-visitor.c >>> @@ -246,13 +246,18 @@ static void qmp_input_type_number(Visitor *v, d= ouble *obj, const char *name, >>> QmpInputVisitor *qiv =3D to_qiv(v); >>> QObject *qobj =3D qmp_input_get_object(qiv, name); >>> =20 >>> - if (!qobj || qobject_type(qobj) !=3D QTYPE_QFLOAT) { >>> + if (!qobj || (qobject_type(qobj) !=3D QTYPE_QFLOAT && >>> + qobject_type(qobj) !=3D QTYPE_QINT)) { >>> error_set(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "= null", >>> "double"); >> >> s/double/number >> >> It's also important to note that migrate_set_downtime is (positively) = affected >> by this change. Today, it only accepts a double, eg.: >> >> { "execute": "migrate_set_downtime", "arguments": { "value": 1 } } >> { >> "error": { >> "class": "InvalidParameterType",=20 >> "desc": "Invalid parameter type for 'value', expected: double"= ,=20 >> "data": { >> "name": "value",=20 >> "expected": "double" >> } >> } >> } >> >> That's a bug (as it's documented to accept a number) and this patch fi= xes it. >> There's an interface change, but I think it won't cause problems in pr= actice. >> >> Please, fix the error message above and would be nice to get this (and= patch >> 02/07) as a separate series for 1.1. >=20 > Hmm, this is kinda awkward because I don't think we can change it witho= ut > breaking any trees based off qom-next. That's no problem at all, it is announced as rebasing and I have scripts in place to pull and recursively rebase all my QOM branches. For such a trivial textual change I can even fix it up manually. :) Since Luiz is now taking care of this one I will simply drop it from my qom-1.1 branch to avoid any confusion. Andreas > Since the error msg predates the bug fix (it just becomes more obviousl= y > wrong as a result of the fix), can you pull these commits as is into yo= ur > QMP tree? >=20 > In the meantime I can send another patch, based on qom-next or qmp, tha= t > fixes the error msg. We can then get all 3 into 1.1/master via QMP tree= , and I > think qom-next should still merge cleanly back into master after 1.1 >=20 >> >> >>> return; >>> } >>> =20 >>> - *obj =3D qfloat_get_double(qobject_to_qfloat(qobj)); >>> + if (qobject_type(qobj) =3D=3D QTYPE_QINT) { >>> + *obj =3D qint_get_int(qobject_to_qint(qobj)); >>> + } else { >>> + *obj =3D qfloat_get_double(qobject_to_qfloat(qobj)); >>> + } >>> } >>> =20 >>> static void qmp_input_start_optional(Visitor *v, bool *present, --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=F6rffer; HRB 16746 AG N=FCrnbe= rg