On Wed 10 Jun 2020 02:04:22 PM CEST, Vladimir Sementsov-Ogievskiy wrote:
> +             * The top layer deferred to this layer, and because this layer 
> is
> +             * short, any zeroes that we synthesize beyond EOF behave as if 
> they
> +             * were allocated at this layer
>               */
> +            assert(ret & BDRV_BLOCK_EOF);
>              *pnum = bytes;
> +            if (file) {
> +                *file = p;
> +            }
> +            return BDRV_BLOCK_ZERO | BDRV_BLOCK_ALLOCATED;

You don't add BDRV_BLOCK_EOF to the return code here ?

> +        res = bdrv_block_status_above(bs, NULL, offset, bytes, &nr, NULL, 
> NULL);
> +        offset += nr;
> +        bytes -= nr;
> +    } while (res >= 0 && (res & BDRV_BLOCK_ZERO) && nr && bytes);

About this last "... && nr && bytes", I think 'nr' already implies
'bytes', maybe you want to use an assertion instead?

Berto

Reply via email to