qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 1/8] block: Handle filter truncation like native


From: Maxim Levitsky
Subject: Re: [Qemu-devel] [PATCH 1/8] block: Handle filter truncation like native impl.
Date: Wed, 18 Sep 2019 23:49:39 +0300

On Wed, 2019-09-18 at 11:51 +0200, Max Reitz wrote:
> Make the filter truncation (passing it through to bs->file) a
> first-class citizen and handle it exactly as if it was the filter
> driver's native implementation of .bdrv_co_truncate().
> 
> I do not see a reason not to, it makes the code a bit shorter, and may
> be even more correct because this gets us to finish the write_req that
> we prepared before (may be important to e.g. bring dirty bitmaps to the
> correct size).
> 
> Signed-off-by: Max Reitz <address@hidden>
> ---
>  block/io.c | 13 ++++++-------
>  1 file changed, 6 insertions(+), 7 deletions(-)
> 
> diff --git a/block/io.c b/block/io.c
> index f8c3596131..723655c792 100644
> --- a/block/io.c
> +++ b/block/io.c
> @@ -3299,20 +3299,19 @@ int coroutine_fn bdrv_co_truncate(BdrvChild *child, 
> int64_t offset,
>          goto out;
>      }
>  
> -    if (!drv->bdrv_co_truncate) {
> -        if (bs->file && drv->is_filter) {
> -            ret = bdrv_co_truncate(bs->file, offset, prealloc, errp);
> -            goto out;
> -        }
> +    if (drv->bdrv_co_truncate) {
> +        ret = drv->bdrv_co_truncate(bs, offset, prealloc, errp);
> +    } else if (bs->file && drv->is_filter) {
> +        ret = bdrv_co_truncate(bs->file, offset, prealloc, errp);
> +    } else {
>          error_setg(errp, "Image format driver does not support resize");
>          ret = -ENOTSUP;
>          goto out;
>      }
> -
> -    ret = drv->bdrv_co_truncate(bs, offset, prealloc, errp);
>      if (ret < 0) {
>          goto out;
>      }
> +
> 
I would say that those are unrelated whitespace changes, but I myself
don't mind this :-)


>      ret = refresh_total_sectors(bs, offset >> BDRV_SECTOR_BITS);
>      if (ret < 0) {
>          error_setg_errno(errp, -ret, "Could not refresh total sector count");

Looks all right to me, although I don't know the block filters well yet.

Reviewed-by: Maxim Levitsky <address@hidden>

Best regards,
        Maxim Levitsky





reply via email to

[Prev in Thread] Current Thread [Next in Thread]