Message ID | 20180208192328.16550-3-kwolf@redhat.com |
---|---|
State | New |
Headers | show |
Series | x-blockdev-create for protocols and qcow2 | expand |
On 02/08/2018 01:23 PM, Kevin Wolf wrote: > Signed-off-by: Kevin Wolf <kwolf@redhat.com> > --- > qapi/block-core.json | 45 ++++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 44 insertions(+), 1 deletion(-) > > diff --git a/qapi/block-core.json b/qapi/block-core.json > index b59b1430bb..aade602a04 100644 > --- a/qapi/block-core.json > +++ b/qapi/block-core.json > @@ -3338,6 +3338,49 @@ > { 'command': 'blockdev-del', 'data': { 'node-name': 'str' } } > > ## > +# @BlockdevQcow2Version: > +# > +# @v2: The original QCOW2 format as introduced in qemu 0.10 (version 2) > +# @v3: The extended QCOW2 format as introduced in qemu 1.1 (version 3) > +# > +# Since: 2.12 > +## > +{ 'enum': 'BlockdevQcow2Version', > + 'data': [ 'v2', 'v3' ] } Yes, I think that turns out nicer. > + > + > +## > +# @BlockdevCreateOptionsQcow2: > +# > +# Driver specific image creation options for qcow2. > +# > +# @file Node to create the image format on > +# @size Size of the virtual disk in bytes > +# @version Compatibility level (default: v3) > +# @backing-file File name of the backing file if a backing file > +# should be used Do we need an explicit comment that the QMP command does NOT open this file (so much as this being the string recorded in the metadata header), but that the caller is expected to later connect a node visiting the backing file to this node after the create has completed? Or is that more for adding later in the QMP command that uses the overall union type (as the same rule will apply to multiple formats, not just qcow2 - the create operation is NOT creating the backing chain, but just formatting one element that will later be hooked into the chain). > +# @backing-fmt Name of the block driver to use for the backing file > +# @encrypt Encryption options if the image should be encrypted > +# @cluster-size qcow2 cluster size in bytes (default: 65536) > +# @preallocation Preallocation mode for the new image (default: off) > +# @lazy-refcounts True if refcounts may be updated lazily (default: off) > +# @refcount-bits Width of reference counts in bits (default: 16) > +# > +# Since: 2.12 > +## > +{ 'struct': 'BlockdevCreateOptionsQcow2', > + 'data': { 'file': 'BlockdevRef', > + 'size': 'size', > + '*version': 'BlockdevQcow2Version', > + '*backing-file': 'str', > + '*backing-fmt': 'BlockdevDriver', > + '*encrypt': 'QCryptoBlockCreateOptions', > + '*cluster-size': 'size', > + '*preallocation': 'PreallocMode', > + '*lazy-refcounts': 'bool', > + '*refcount-bits': 'int' } } Looks reasonable, and matches what qemu-img create -f qcow2 can do (the obvious differences of '-' in QMP instead of '_' in qemu-img -o spelling is fine). Reviewed-by: Eric Blake <eblake@redhat.com>
On 2018-02-08 20:23, Kevin Wolf wrote: > Signed-off-by: Kevin Wolf <kwolf@redhat.com> > --- > qapi/block-core.json | 45 ++++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 44 insertions(+), 1 deletion(-) Reviewed-by: Max Reitz <mreitz@redhat.com>
diff --git a/qapi/block-core.json b/qapi/block-core.json index b59b1430bb..aade602a04 100644 --- a/qapi/block-core.json +++ b/qapi/block-core.json @@ -3338,6 +3338,49 @@ { 'command': 'blockdev-del', 'data': { 'node-name': 'str' } } ## +# @BlockdevQcow2Version: +# +# @v2: The original QCOW2 format as introduced in qemu 0.10 (version 2) +# @v3: The extended QCOW2 format as introduced in qemu 1.1 (version 3) +# +# Since: 2.12 +## +{ 'enum': 'BlockdevQcow2Version', + 'data': [ 'v2', 'v3' ] } + + +## +# @BlockdevCreateOptionsQcow2: +# +# Driver specific image creation options for qcow2. +# +# @file Node to create the image format on +# @size Size of the virtual disk in bytes +# @version Compatibility level (default: v3) +# @backing-file File name of the backing file if a backing file +# should be used +# @backing-fmt Name of the block driver to use for the backing file +# @encrypt Encryption options if the image should be encrypted +# @cluster-size qcow2 cluster size in bytes (default: 65536) +# @preallocation Preallocation mode for the new image (default: off) +# @lazy-refcounts True if refcounts may be updated lazily (default: off) +# @refcount-bits Width of reference counts in bits (default: 16) +# +# Since: 2.12 +## +{ 'struct': 'BlockdevCreateOptionsQcow2', + 'data': { 'file': 'BlockdevRef', + 'size': 'size', + '*version': 'BlockdevQcow2Version', + '*backing-file': 'str', + '*backing-fmt': 'BlockdevDriver', + '*encrypt': 'QCryptoBlockCreateOptions', + '*cluster-size': 'size', + '*preallocation': 'PreallocMode', + '*lazy-refcounts': 'bool', + '*refcount-bits': 'int' } } + +## # @BlockdevCreateNotSupported: # # This is used for all drivers that don't support creating images. @@ -3380,7 +3423,7 @@ 'null-aio': 'BlockdevCreateNotSupported', 'null-co': 'BlockdevCreateNotSupported', 'parallels': 'BlockdevCreateNotSupported', - 'qcow2': 'BlockdevCreateNotSupported', + 'qcow2': 'BlockdevCreateOptionsQcow2', 'qcow': 'BlockdevCreateNotSupported', 'qed': 'BlockdevCreateNotSupported', 'quorum': 'BlockdevCreateNotSupported',
Signed-off-by: Kevin Wolf <kwolf@redhat.com> --- qapi/block-core.json | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-)