qemu-devel
[Top][All Lists]
Advanced

[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: Avi Kivity
Subject: [Qemu-devel] Re: RFC v2: blockdev_add & friends, brief rationale, QMP docs
Date: Tue, 15 Jun 2010 16:44:44 +0300
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100430 Fedora/3.0.4-3.fc13 Thunderbird/3.0.4

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.

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.



--
error compiling committee.c: too many arguments to function




reply via email to

[Prev in Thread] Current Thread [Next in Thread]