[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: RFC v2: blockdev_add & friends, brief rationale, QMP do
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] Re: RFC v2: blockdev_add & friends, brief rationale, QMP docs |
Date: |
Wed, 16 Jun 2010 13:20:21 +0200 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100430 Fedora/3.0.4-2.fc12 Thunderbird/3.0.4 |
Am 15.06.2010 15:44, schrieb Avi Kivity:
> On 06/10/2010 08:45 PM, Markus Armbruster wrote:
>>
>>
>> * Our config file format is in INI syntax. QemuOpts correspond to
>> INI sections. Sections can't be nested, so recursive QemuOpts
>> don't translate.
>>
>
> git (and probably others) use
>
> [a "b"]
> c = d
>
> for
>
> a.b.c=d
>
>> Examples:
>>
>> * Single protocol:
>>
>> -blockdev id=blk1,format=raw,protocol=[file,file=fedora.img]
>>
>> Requires suitable syntactic sugar to get the simple form (*).
>>
>> * blkdebug
>>
>> -blockdev id=blk2,format=qcow2,\
>> protocol=[blkdebug,config=test.blkdebug,\
>> protocol=[file,file=test.qcow2]]
>>
>> * Avi's mirror:
>>
>> -blockdev id=blk3,format=raw,\
>> protocol=[mirror,\
>> [file,file=local.img],\
>> [nbd,domain=unix,sockert=nbd-sock]]
>>
>> 2. We already have a syntax to specify trees, namely JSON, so use it
>>
>> If -blockdev's argument starts with '{', it's a JSON object suitable
>> as argument of blockdev_add in QMP.
>>
>> We still provide ordinary QemuOpts syntax for the cases that can be
>> expressed with it, i.e. single protocol.
>>
>> I figure we'd want syntactic sugar for blkdebug, to permit its use
>> from the command line without having to resort to JSON.
>>
>
> Might be nice as a general extension to QemuOpts.
I agree.
>
>> 3. Stack protocols through named references
>>
>> The first protocol is "inlined" into -blockdev. Any further
>> protocols need to be referenced by name.
>>
>> Best explained by example:
>>
>> * Single protocol:
>>
>> -blockdev id=blk1,format=raw,protocol=file,file=fedora.img
>>
>> To get the simple form (*), make protocol optional with a suitable
>> default.
>>
>> * blkdebug
>>
>> -blockdev id=blk2,format=qcow2,protocol=blkdebug,config=test.blkdebug,\
>> base=blk2-base
>> -blockproto id=blk2-base,protocol=file,file=test.qcow2
>>
>> * Avi's mirror:
>>
>> -blockdev id=blk3,format=raw,protocol=mirror,\
>> base=blk3-base1,base=blk3=base2
>> -blockproto id=blk3-base1,protocol=file,file=local.img
>> -blockproto id=blk3-base2,protocol=nbd,domain=unix,sockert=nbd-sock
>>
>> Anything but a single protocol becomes pretty verbose. Syntactic
>> sugar for the blkdebug case would be possible; not sure it's worth
>> it.
>>
>> No QemuOpts syntax changes. INI can handle this just fine.
>>
>>
>
> Looks like the least painful option as no new infrastructure is needed.
> I'd go with this.
But it's painful to type for the user. After all -blockdev on the
command line is for the user, as tools should use QMP. Also note that
this syntax mixes format and protocol options on one line which I
consider confusing at best.
As I told Markus already in private before he posted this, I prefer the
bracket solution for its clarity and simplicity, even though it comes at
the cost of having additional characters that need to be escaped.
Kevin
- Re: [Qemu-devel] RFC v2: blockdev_add & friends, brief rationale, QMP docs, (continued)
- Re: [Qemu-devel] RFC v2: blockdev_add & friends, brief rationale, QMP docs, Markus Armbruster, 2010/06/15
- Re: [Qemu-devel] RFC v2: blockdev_add & friends, brief rationale, QMP docs, Avi Kivity, 2010/06/15
- Re: [Qemu-devel] RFC v2: blockdev_add & friends, brief rationale, QMP docs, Markus Armbruster, 2010/06/15
- Re: [Qemu-devel] RFC v2: blockdev_add & friends, brief rationale, QMP docs, Avi Kivity, 2010/06/15
- Re: [Qemu-devel] RFC v2: blockdev_add & friends, brief rationale, QMP docs, Markus Armbruster, 2010/06/15
- Re: [Qemu-devel] RFC v2: blockdev_add & friends, brief rationale, QMP docs, Avi Kivity, 2010/06/16
- Re: [Qemu-devel] RFC v2: blockdev_add & friends, brief rationale, QMP docs, Markus Armbruster, 2010/06/16
- Re: [Qemu-devel] RFC v2: blockdev_add & friends, brief rationale, QMP docs, Avi Kivity, 2010/06/16
[Qemu-devel] Re: RFC v2: blockdev_add & friends, brief rationale, QMP docs, Avi Kivity, 2010/06/15
- [Qemu-devel] Re: RFC v2: blockdev_add & friends, brief rationale, QMP docs, Gerd Hoffmann, 2010/06/15
- [Qemu-devel] Re: RFC v2: blockdev_add & friends, brief rationale, QMP docs,
Kevin Wolf <=
- [Qemu-devel] Re: RFC v2: blockdev_add & friends, brief rationale, QMP docs, Markus Armbruster, 2010/06/16
- Re: [Qemu-devel] Re: RFC v2: blockdev_add & friends, brief rationale, QMP docs, Anthony Liguori, 2010/06/16
- Re: [Qemu-devel] Re: RFC v2: blockdev_add & friends, brief rationale, QMP docs, Kevin Wolf, 2010/06/16
- Re: [Qemu-devel] Re: RFC v2: blockdev_add & friends, brief rationale, QMP docs, Christoph Hellwig, 2010/06/16
- Re: [Qemu-devel] Re: RFC v2: blockdev_add & friends, brief rationale, QMP docs, Markus Armbruster, 2010/06/16
- Re: [Qemu-devel] Re: RFC v2: blockdev_add & friends, brief rationale, QMP docs, Anthony Liguori, 2010/06/16
- Re: [Qemu-devel] Re: RFC v2: blockdev_add & friends, brief rationale, QMP docs, Kevin Wolf, 2010/06/17
- Re: [Qemu-devel] Re: RFC v2: blockdev_add & friends, brief rationale, QMP docs, Anthony Liguori, 2010/06/17
- Re: [Qemu-devel] Re: RFC v2: blockdev_add & friends, brief rationale, QMP docs, Kevin Wolf, 2010/06/17
- Re: [Qemu-devel] Re: RFC v2: blockdev_add & friends, brief rationale, QMP docs, Markus Armbruster, 2010/06/18