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>