On 02/03/2017 09:47 AM, Vladimir Sementsov-Ogievskiy wrote: > For loading dirty bitmap from nbd server. Or for underlying storages for
s/storages/storage/ > other formats. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsement...@virtuozzo.com> > --- > blockdev.c | 28 ++++++++++++++++++++++++++++ > qapi/block-core.json | 14 ++++++++++++++ > 2 files changed, 42 insertions(+) > > diff --git a/blockdev.c b/blockdev.c > index 1bc3fe386a..2529943e7f 100644 > --- a/blockdev.c > +++ b/blockdev.c > @@ -2790,6 +2790,34 @@ void qmp_block_dirty_bitmap_clear(const char *node, > const char *name, > aio_context_release(aio_context); > } > > +void qmp_block_dirty_bitmap_load(const char *node, const char *name, > + Error **errp) > +{ > + AioContext *aio_context; > + BlockDriverState *bs; > + > + if (!node) { > + error_setg(errp, "Node cannot be NULL"); > + return; > + } > + if (!name) { > + error_setg(errp, "Bitmap name cannot be NULL"); > + return; > + } QAPI guarantees that node and name are non-null for non-optional arguments; these checks are dead code... > +++ b/qapi/block-core.json > @@ -1280,6 +1280,20 @@ > 'data': 'BlockDirtyBitmap' } > > ## > +# @block-dirty-bitmap-load: > +# > +# Load a dirty bitmap from the storage (qcow2 file or nbd export) > +# > +# Returns: nothing on success > +# If @node is not a valid block device, DeviceNotFound > +# If @name is not found, GenericError with an explanation > +# > +# Since: vz-7.4 > +## > + { 'command': 'block-dirty-bitmap-load', > + 'data': 'BlockDirtyBitmap' } ...since BlockDirtyBitmap defines them as required fields. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature