Message ID | 20231027074636.430139-3-alexander.ivanov@virtuozzo.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | parallels: Add full dirty bitmap support | expand |
On 10/27/23 09:46, Alexander Ivanov wrote: > We are going to add parallels image extensions storage and need a separate > function for inactivation code. > > Signed-off-by: Alexander Ivanov <alexander.ivanov@virtuozzo.com> > --- > block/parallels.c | 22 ++++++++++++++++------ > 1 file changed, 16 insertions(+), 6 deletions(-) > > diff --git a/block/parallels.c b/block/parallels.c > index 01a61a4ebd..8962bc9fe5 100644 > --- a/block/parallels.c > +++ b/block/parallels.c > @@ -1428,18 +1428,27 @@ fail: > return ret; > } > > +static int parallels_inactivate(BlockDriverState *bs) > +{ > + BDRVParallelsState *s = bs->opaque; > + int ret; > + > + s->header->inuse = 0; > + parallels_update_header(bs); > + > + /* errors are ignored, so we might as well pass exact=true */ > + ret = bdrv_truncate(bs->file, s->data_end << BDRV_SECTOR_BITS, true, > + PREALLOC_MODE_OFF, 0, NULL); > + > + return ret; > +} > > static void parallels_close(BlockDriverState *bs) > { > BDRVParallelsState *s = bs->opaque; > > if ((bs->open_flags & BDRV_O_RDWR) && !(bs->open_flags & BDRV_O_INACTIVE)) { > - s->header->inuse = 0; > - parallels_update_header(bs); > - > - /* errors are ignored, so we might as well pass exact=true */ > - bdrv_truncate(bs->file, s->data_end << BDRV_SECTOR_BITS, true, > - PREALLOC_MODE_OFF, 0, NULL); > + parallels_inactivate(bs); > } > > parallels_free_used_bitmap(bs); > @@ -1478,6 +1487,7 @@ static BlockDriver bdrv_parallels = { > .bdrv_co_check = parallels_co_check, > .bdrv_co_pdiscard = parallels_co_pdiscard, > .bdrv_co_pwrite_zeroes = parallels_co_pwrite_zeroes, > + .bdrv_inactivate = parallels_inactivate, > }; > > static void bdrv_parallels_init(void) Reviewed-by: Denis V. Lunev <den@openvz.org>
diff --git a/block/parallels.c b/block/parallels.c index 01a61a4ebd..8962bc9fe5 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -1428,18 +1428,27 @@ fail: return ret; } +static int parallels_inactivate(BlockDriverState *bs) +{ + BDRVParallelsState *s = bs->opaque; + int ret; + + s->header->inuse = 0; + parallels_update_header(bs); + + /* errors are ignored, so we might as well pass exact=true */ + ret = bdrv_truncate(bs->file, s->data_end << BDRV_SECTOR_BITS, true, + PREALLOC_MODE_OFF, 0, NULL); + + return ret; +} static void parallels_close(BlockDriverState *bs) { BDRVParallelsState *s = bs->opaque; if ((bs->open_flags & BDRV_O_RDWR) && !(bs->open_flags & BDRV_O_INACTIVE)) { - s->header->inuse = 0; - parallels_update_header(bs); - - /* errors are ignored, so we might as well pass exact=true */ - bdrv_truncate(bs->file, s->data_end << BDRV_SECTOR_BITS, true, - PREALLOC_MODE_OFF, 0, NULL); + parallels_inactivate(bs); } parallels_free_used_bitmap(bs); @@ -1478,6 +1487,7 @@ static BlockDriver bdrv_parallels = { .bdrv_co_check = parallels_co_check, .bdrv_co_pdiscard = parallels_co_pdiscard, .bdrv_co_pwrite_zeroes = parallels_co_pwrite_zeroes, + .bdrv_inactivate = parallels_inactivate, }; static void bdrv_parallels_init(void)
We are going to add parallels image extensions storage and need a separate function for inactivation code. Signed-off-by: Alexander Ivanov <alexander.ivanov@virtuozzo.com> --- block/parallels.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-)