All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: David Hildenbrand <david@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>,
	Eric Blake <eblake@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	qemu-devel@nongnu.org, Michael Roth <mdroth@linux.vnet.ibm.com>
Subject: Re: [Qemu-devel] [PATCH v2 6/9] qapi: Rewrite string-input-visitor
Date: Wed, 21 Nov 2018 15:12:16 +0100	[thread overview]
Message-ID: <871s7e4j0f.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <3021bc1d-d802-96ad-fd30-8dc78f5af3c8@redhat.com> (David Hildenbrand's message of "Wed, 21 Nov 2018 11:53:57 +0100")

David Hildenbrand <david@redhat.com> writes:

> On 20.11.18 21:58, Markus Armbruster wrote:
>> I think the title should be something like
>> 
>>     qapi: Rewrite string-input-visitor's integer and list parsing
>> 
>> because you don't actually rewrite all of it.
>> 
>> Eric Blake <eblake@redhat.com> writes:
>> 
>>> On 11/20/18 3:25 AM, David Hildenbrand wrote:
>>>> The input visitor has some problems right now, especially
>>>> - unsigned type "Range" is used to process signed ranges, resulting in
>>>>    inconsistent behavior and ugly/magical code
>>>> - uint64_t are parsed like int64_t, so big uint64_t values are not
>>>>    supported and error messages are misleading
>>>> - lists/ranges of int64_t are accepted although no list is parsed and
>>>>    we should rather report an error
>>>> - lists/ranges are preparsed using int64_t, making it hard to
>>>>    implement uint64_t values or uint64_t lists
>>>> - types that don't support lists don't bail out
>>>> - visiting beyond the end of a list is not handled properly
>>>> - we don't actually parse lists, we parse *sets*: members are sorted,
>>>>    and duplicates eliminated
>>>>
>>>> So let's rewrite it by getting rid of usage of the type "Range" and
>>>> properly supporting lists of int64_t and uint64_t (including ranges of
>>>> both types), fixing the above mentioned issues.
>>>>
>>>> Lists of other types are not supported and will properly report an
>>>> error. Virtual walks are now supported.
>>>>
>>>> Tests have to be fixed up:
>>>> - Two BUGs were hardcoded that are fixed now
>>>> - The string-input-visitor now actually returns a parsed list and not
>>>>    an ordered set.
>>>>
>>>> Please note that no users/callers have to be fixed up. Candiates using
>>>
>>> s/Candiates/Candidates/
>>>
>>>> visit_type_uint16List() and friends are:
>>>> - backends/hostmem.c:host_memory_backend_set_host_nodes()
>>>> -- Code can deal with dupilcates/unsorted lists
>>>
>>> s/dupilcates/duplicates/
>
> Thanks, both fixed.
>
>> 
>>>> @@ -330,9 +381,10 @@ static void parse_type_null(Visitor *v, const char *name, QNull **obj,
>>>>   {
>>>>       StringInputVisitor *siv = to_siv(v);
>>>>   +    assert(siv->lm == LM_NONE);
>>>>       *obj = NULL;
>>>>   -    if (!siv->string || siv->string[0]) {
>>>> +    if (siv->string[0]) {
>>>
>>> Why did this condition change?
>> 
>> As far as I can tell, siv->string can't ever be null.  Sticking the
>> change into this patch is perhaps debatable.  I'm okay with it.
>
> Yes, we have an assertion when creating the visitor. Do you want me to
> pull this into a separate patch?

I'm okay with it as is.  Up to you.

> (It made sense under the old patch subject ;) )

It did :)

>>> Reviewed-by: Eric Blake <eblake@redhat.com>
>> 
>> With the commit message improved once more:
>> Reviewed-by: Markus Armbruster <armbru@redhat.com>
>> 
> Thanks!

  reply	other threads:[~2018-11-21 14:12 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-20  9:25 [Qemu-devel] [PATCH v2 0/9] qapi: rewrite string-input-visitor David Hildenbrand
2018-11-20  9:25 ` [Qemu-devel] [PATCH v2 1/9] cutils: Add qemu_strtod() and qemu_strtod_finite() David Hildenbrand
2018-11-20 16:13   ` Eric Blake
2018-11-20 20:07     ` Markus Armbruster
2018-11-21 10:35       ` David Hildenbrand
2018-11-21 14:00         ` Markus Armbruster
2018-11-21 17:16         ` Eric Blake
2018-11-20  9:25 ` [Qemu-devel] [PATCH v2 2/9] cutils: Fix qemu_strtosz() & friends to reject non-finite sizes David Hildenbrand
2018-11-20 16:29   ` Eric Blake
2018-11-20 20:31     ` Markus Armbruster
2018-11-20 20:41       ` Eric Blake
2018-11-21 10:44         ` David Hildenbrand
2018-11-21 14:16           ` Markus Armbruster
2018-11-21 17:25           ` Eric Blake
2018-11-20  9:25 ` [Qemu-devel] [PATCH v2 3/9] qapi: Fix string-input-visitor to reject NaN and infinities David Hildenbrand
2018-11-20 20:34   ` Markus Armbruster
2018-11-20  9:25 ` [Qemu-devel] [PATCH v2 4/9] qapi: Use qemu_strtod_finite() in qobject-input-visitor David Hildenbrand
2018-11-20  9:25 ` [Qemu-devel] [PATCH v2 5/9] test-string-input-visitor: Add more tests David Hildenbrand
2018-11-20 17:06   ` Eric Blake
2018-11-20 17:20     ` Eric Blake
2018-11-20 17:26       ` Eric Blake
2018-11-20 20:46         ` Markus Armbruster
2018-11-21 10:49         ` David Hildenbrand
2018-11-21 14:09           ` Markus Armbruster
2018-11-20  9:25 ` [Qemu-devel] [PATCH v2 6/9] qapi: Rewrite string-input-visitor David Hildenbrand
2018-11-20 17:40   ` Eric Blake
2018-11-20 20:58     ` Markus Armbruster
2018-11-21 10:53       ` David Hildenbrand
2018-11-21 14:12         ` Markus Armbruster [this message]
2018-11-20  9:25 ` [Qemu-devel] [PATCH v2 7/9] test-string-input-visitor: Use virtual walk David Hildenbrand
2018-11-20 17:41   ` Eric Blake
2018-11-20  9:25 ` [Qemu-devel] [PATCH v2 8/9] test-string-input-visitor: Split off uint64 list tests David Hildenbrand
2018-11-20  9:25 ` [Qemu-devel] [PATCH v2 9/9] test-string-input-visitor: Add range overflow tests David Hildenbrand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=871s7e4j0f.fsf@dusky.pond.sub.org \
    --to=armbru@redhat.com \
    --cc=david@redhat.com \
    --cc=eblake@redhat.com \
    --cc=mdroth@linux.vnet.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.