[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 1/4] block: Add bdrv_make_empty()
From: |
Kevin Wolf |
Subject: |
Re: [PATCH 1/4] block: Add bdrv_make_empty() |
Date: |
Tue, 28 Apr 2020 16:01:32 +0200 |
Am 28.04.2020 um 15:53 hat Eric Blake geschrieben:
> On 4/28/20 8:26 AM, Max Reitz wrote:
> > Right now, all users of bdrv_make_empty() call the BlockDriver method
> > directly. That is not only bad style, it is also wrong, unless the
> > caller has a BdrvChild with a WRITE permission.
> >
> > Introduce bdrv_make_empty() that verifies that it does.
> >
> > Signed-off-by: Max Reitz <address@hidden>
> > ---
> > include/block/block.h | 1 +
> > block.c | 23 +++++++++++++++++++++++
> > 2 files changed, 24 insertions(+)
> >
> > diff --git a/include/block/block.h b/include/block/block.h
> > index b05995fe9c..d947fb4080 100644
> > --- a/include/block/block.h
> > +++ b/include/block/block.h
> > @@ -351,6 +351,7 @@ BlockMeasureInfo *bdrv_measure(BlockDriver *drv,
> > QemuOpts *opts,
> > void bdrv_get_geometry(BlockDriverState *bs, uint64_t *nb_sectors_ptr);
> > void bdrv_refresh_limits(BlockDriverState *bs, Error **errp);
> > int bdrv_commit(BlockDriverState *bs);
> > +int bdrv_make_empty(BdrvChild *c, Error **errp);
>
> Can we please fix this to take a flags parameter? I want to make it easier
> for callers to request BDRV_REQ_NO_FALLBACK for distinguishing between
> callers where the image must be made empty (read as all zeroes) regardless
> of time spent, vs. made empty quickly (including if it is already all zero)
> but where the caller is prepared for the operation to fail and will write
> zeroes itself if fast bulk zeroing was not possible.
bdrv_make_empty() is not for making an image read as all zeroes, but to
make it fully unallocated so that the backing file becomes visible.
Are you confusing it with bdrv_make_zero(), which is just a wrapper
around bdrv_pwrite_zeroes() and does take flags?
Kevin
Re: [PATCH 1/4] block: Add bdrv_make_empty(), Kevin Wolf, 2020/04/28
[PATCH 2/4] block: Use bdrv_make_empty() where possible, Max Reitz, 2020/04/28
[PATCH 3/4] block: Add blk_make_empty(), Max Reitz, 2020/04/28