From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55154) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZbhOY-0000LU-Nm for qemu-devel@nongnu.org; Mon, 14 Sep 2015 23:59:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZbhOV-00063W-H3 for qemu-devel@nongnu.org; Mon, 14 Sep 2015 23:59:02 -0400 References: <1441878905-5272-1-git-send-email-wency@cn.fujitsu.com> <1441878905-5272-2-git-send-email-wency@cn.fujitsu.com> <87r3m1krdl.fsf@blackfin.pond.sub.org> <55F6EBF5.2090101@redhat.com> <55F78059.4030309@cn.fujitsu.com> <55F78225.404@cn.fujitsu.com> <55F794A4.5060903@redhat.com> From: Wen Congyang Message-ID: <55F7975B.4050405@cn.fujitsu.com> Date: Tue, 15 Sep 2015 11:58:19 +0800 MIME-Version: 1.0 In-Reply-To: <55F794A4.5060903@redhat.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v3 1/5] support nbd driver in blockdev-add List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eric Blake , Markus Armbruster Cc: Kevin Wolf , Alberto Garcia , zhanghailiang , qemu block , Jiang Yunhong , Dong Eddie , qemu devel , "Dr. David Alan Gilbert" , Gonglei , Stefan Hajnoczi , Yang Hongyang On 09/15/2015 11:46 AM, Eric Blake wrote: > On 09/14/2015 08:27 PM, Wen Congyang wrote: >>> Building fails: >>> GEN qmp-commands.h >>> In file included from /work/src/qemu/qapi-schema.json:9: >>> In file included from /work/src/qemu/qapi/block.json:6: >>> /work/src/qemu/qapi/block-core.json:1844: Flat union 'BlockdevOptionsNBD' must have a string base field >>> Makefile:286: recipe for target 'qmp-commands.h' failed >>> make: *** [qmp-commands.h] Error 1 > > Yep, doesn't work until pending qapi patches land. This patchset: qapi: QMP introspection? > >>> >>> What about this: >>> { 'struct': 'BlockdevOptionsNBDBase', >>> 'data': { 'transport': 'NBDTransport', 'export': 'str' } } >>> { 'union': 'BlockdevOptionsNBD', >>> 'base': 'BlockdevOptionsNBDBase', >>> 'discriminator': 'transport', >>> 'data': { 'unix': 'NBDUnix', 'tcp': 'NBDInet', 'udp': 'NBDInet' } } >> >> Another problem: >> In file included from /work/src/qemu/qapi-schema.json:9: >> In file included from /work/src/qemu/qapi/block.json:6: >> /work/src/qemu/qapi/block-core.json:1866: Member 'nbd' of union 'BlockdevOptions' cannot use union type 'BlockdevOptionsNBD' >> Makefile:286: recipe for target 'qmp-commands.h' failed > > Yep. Artificial restriction; we hope to lift it soon, but don't have > enough qapi patches in place for that one yet (I have not posted my work > in progress to get us that far). > > Possible workaround in the meantime - instead of trying to go with a > nice flat union (where all QMP keys are in the same {} level), we can > use nesting (structs that add another {} to include the unions). How to include the unions to a structs? Use 'base'? Thanks Wen Congyang >