From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35368) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z5B6f-0003Qz-1X for qemu-devel@nongnu.org; Wed, 17 Jun 2015 07:02:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z5B6Z-0005Vn-A4 for qemu-devel@nongnu.org; Wed, 17 Jun 2015 07:02:08 -0400 Received: from mail-wg0-f49.google.com ([74.125.82.49]:35399) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z5B6Z-0005VX-4a for qemu-devel@nongnu.org; Wed, 17 Jun 2015 07:02:03 -0400 Received: by wgbhy7 with SMTP id hy7so33768448wgb.2 for ; Wed, 17 Jun 2015 04:01:17 -0700 (PDT) From: "=?UTF-8?B?S8WRdsOhZ8OzIFpvbHTDoW4=?=" Message-ID: <5581537F.3040005@gmail.com> Date: Wed, 17 Jun 2015 13:01:19 +0200 MIME-Version: 1.0 References: <88a1cc0775d3d4f5262b31b9452f8acccc6bbb41.1434458391.git.DirtY.iCE.hu@gmail.com> <87oakeg4eo.fsf@blackfin.pond.sub.org> <1434530501.5549.23.camel@redhat.com> In-Reply-To: <1434530501.5549.23.camel@redhat.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH v2 2/6] qapi: support nested structs in OptsVisitor List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Gerd Hoffmann , Markus Armbruster Cc: =?UTF-8?B?TMOhc3psw7MgRXJzZWs=?= , qemu-devel@nongnu.org, Michael Roth 2015-06-17 10:41 keltezéssel, Gerd Hoffmann írta: > On Mi, 2015-06-17 at 09:50 +0200, Markus Armbruster wrote: >> Copying László because his fingerprints are on OptsVisitor. >> >> "Kővágó, Zoltán" writes: >> >>> The current OptsVisitor flattens the whole structure, if there are same named >>> fields under different paths (like `in' and `out' in `Audiodev'), the current >>> visitor can't cope with them (for example setting `frequency=44100' will set the >>> in's frequency to 44100 and leave out's frequency unspecified). >>> >>> This patch fixes it, by the following changes: >>> 1) Specifying just the field name will apply to all fields that has the >>> specified name (this means it would set both in's and out's frequency to >>> 44100 in the above example). >>> 2) Optionally user can specify the path in the hierarchy. Names are separated by >>> a dot (e.g. `in.frequency', `foo.bar.something', etc). The user need not >>> specify the whole path, only the last few components (i.e. `bar.something' is >>> equivalent to `foo.bar.something' if only `foo' has a `bar' field). This way >>> 1) is just a special case of this when only the last component is specified. >>> 3) In case of an ambiguity (e.g `frequency=44100,in.frequency=8000') the longest >>> matching (the most specific) path wins (so in this example, in's frequency >>> would become 8000, because `in.frequency' is more specific that `frequency', >>> and out's frequency would become 44100, because only `frequency' matches it). >> >> Can you explain why the complexity is needed, i.e. why we can't just >> require full paths always? > > Keeping the short names is required for -netdev backward compatibility. > > Restricting to short or full (i.e. something= or foo.bar.something=, but > disallow bar.something=) should not be a problem. I'm not sure this > simplifies things much though. We have to build the full path anyway, > and I think bar.something= is just a convenient thing we get almost for > free ... With the current implementation you can specify (see my previous patch) in.try-poll=off in case of alsa. If we would need full paths, it would look like opts.data.in.try-poll=off, which is probably not something we want.