On Tue, Sep 24, 2013 at 03:35:07PM +0200, Peter Lieven wrote: > this patch adds a call to completely zero out a block device. > the operation is sped up by checking the block status and > only writing zeroes to the device if they currently do not > return zeroes. optionally the zero writing can be sped up > by setting the flag BDRV_REQ_MAY_UNMAP to emulate the zero > write by unmapping if the driver supports it. > > Signed-off-by: Peter Lieven <p...@kamp.de> > --- > block.c | 37 +++++++++++++++++++++++++++++++++++++ > include/block/block.h | 1 + > 2 files changed, 38 insertions(+) > > diff --git a/block.c b/block.c > index 784e545..66b9eae 100644 > --- a/block.c > +++ b/block.c > @@ -2398,6 +2398,43 @@ int bdrv_write_zeroes(BlockDriverState *bs, int64_t > sector_num, > BDRV_REQ_ZERO_WRITE | flags); > } > > +/* > + * Completely zero out a block device with the help of bdrv_write_zeroes. > + * The operation is sped up by checking the block status and only writing > + * zeroes to the device if they currently do not return zeroes. Optional > + * flags are passed through to bdrv_write_zeroes (e.g. BDRV_REQ_MAY_UNMAP). > + * > + * Returns < 0 on error, 0 on success. For error codes see bdrv_write(). > + */ > +int bdrv_zeroize(BlockDriverState *bs, BdrvRequestFlags flags)
BlockDriver->bdrv_make_empty() implements zeroing the entire disk for image formats. Please extend that function prototype instead of adding a new interface. Stefan