Message ID | 1487091579-67092-25-git-send-email-vsementsov@virtuozzo.com |
---|---|
State | New |
Headers | show |
On 02/14/2017 11:59 AM, Vladimir Sementsov-Ogievskiy wrote: > Remove persistent bitmap from the storage on block-dirty-bitmap-remove. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > Reviewed-by: Max Reitz <mreitz@redhat.com> > --- > blockdev.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/blockdev.c b/blockdev.c > index c41b791..a365cdf 100644 > --- a/blockdev.c > +++ b/blockdev.c > @@ -2767,6 +2767,7 @@ void qmp_block_dirty_bitmap_remove(const char *node, const char *name, > AioContext *aio_context; > BlockDriverState *bs; > BdrvDirtyBitmap *bitmap; > + Error *local_err = NULL; > > bitmap = block_dirty_bitmap_lookup(node, name, &bs, &aio_context, errp); > if (!bitmap || !bs) { > @@ -2779,6 +2780,15 @@ void qmp_block_dirty_bitmap_remove(const char *node, const char *name, > name); > goto out; > } > + > + if (bdrv_dirty_bitmap_get_persistance(bitmap)) { > + bdrv_remove_persistent_dirty_bitmap(bs, name, &local_err); > + if (local_err != NULL) { > + error_propagate(errp, local_err); > + goto out; > + } > + } > + > bdrv_dirty_bitmap_make_anon(bitmap); > bdrv_release_dirty_bitmap(bs, bitmap); > > Reviewed-by: John Snow <jsnow@redhat.com>
diff --git a/blockdev.c b/blockdev.c index c41b791..a365cdf 100644 --- a/blockdev.c +++ b/blockdev.c @@ -2767,6 +2767,7 @@ void qmp_block_dirty_bitmap_remove(const char *node, const char *name, AioContext *aio_context; BlockDriverState *bs; BdrvDirtyBitmap *bitmap; + Error *local_err = NULL; bitmap = block_dirty_bitmap_lookup(node, name, &bs, &aio_context, errp); if (!bitmap || !bs) { @@ -2779,6 +2780,15 @@ void qmp_block_dirty_bitmap_remove(const char *node, const char *name, name); goto out; } + + if (bdrv_dirty_bitmap_get_persistance(bitmap)) { + bdrv_remove_persistent_dirty_bitmap(bs, name, &local_err); + if (local_err != NULL) { + error_propagate(errp, local_err); + goto out; + } + } + bdrv_dirty_bitmap_make_anon(bitmap); bdrv_release_dirty_bitmap(bs, bitmap);