On Tue, Jun 05, 2018 at 02:59:05PM -0400, John Snow wrote: > From: Vladimir Sementsov-Ogievskiy <vsement...@virtuozzo.com> > > This is needed, for example, to create a new bitmap and merge several > disabled bitmaps into a new one. Without this flag we will have to > put block-dirty-bitmap-add and block-dirty-bitmap-disable into one > transaction. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsement...@virtuozzo.com> > Signed-off-by: John Snow <js...@redhat.com>
Reviewed-by: Jeff Cody <jc...@redhat.com> > --- > blockdev.c | 10 ++++++++++ > qapi/block-core.json | 6 +++++- > 2 files changed, 15 insertions(+), 1 deletion(-) > > diff --git a/blockdev.c b/blockdev.c > index b00908fdfd..03e7cbeea1 100644 > --- a/blockdev.c > +++ b/blockdev.c > @@ -2073,6 +2073,7 @@ static void > block_dirty_bitmap_add_prepare(BlkActionState *common, > action->has_granularity, action->granularity, > action->has_persistent, action->persistent, > action->has_autoload, action->autoload, > + action->has_x_disabled, action->x_disabled, > &local_err); > > if (!local_err) { > @@ -2880,6 +2881,7 @@ void qmp_block_dirty_bitmap_add(const char *node, const > char *name, > bool has_granularity, uint32_t granularity, > bool has_persistent, bool persistent, > bool has_autoload, bool autoload, > + bool has_disabled, bool disabled, > Error **errp) > { > BlockDriverState *bs; > @@ -2914,6 +2916,10 @@ void qmp_block_dirty_bitmap_add(const char *node, > const char *name, > warn_report("Autoload option is deprecated and its value is > ignored"); > } > > + if (!has_disabled) { > + disabled = false; > + } > + > if (persistent && > !bdrv_can_store_new_dirty_bitmap(bs, name, granularity, errp)) > { > @@ -2925,6 +2931,10 @@ void qmp_block_dirty_bitmap_add(const char *node, > const char *name, > return; > } > > + if (disabled) { > + bdrv_disable_dirty_bitmap(bitmap); > + } > + > bdrv_dirty_bitmap_set_persistance(bitmap, persistent); > } > > diff --git a/qapi/block-core.json b/qapi/block-core.json > index 3999175c23..f06a43bfb2 100644 > --- a/qapi/block-core.json > +++ b/qapi/block-core.json > @@ -1734,11 +1734,15 @@ > # Currently, all dirty tracking bitmaps are loaded from Qcow2 on > # open. > # > +# @x-disabled: the bitmap is created in the disabled state, which means that > +# it will not track drive changes. The bitmap may be enabled > with > +# x-block-dirty-bitmap-enable. Default is false. (Since: 3.0) > +# > # Since: 2.4 > ## > { 'struct': 'BlockDirtyBitmapAdd', > 'data': { 'node': 'str', 'name': 'str', '*granularity': 'uint32', > - '*persistent': 'bool', '*autoload': 'bool' } } > + '*persistent': 'bool', '*autoload': 'bool', '*x-disabled': > 'bool' } } > > ## > # @BlockDirtyBitmapMerge: > -- > 2.14.3 > >