Am 07.10.2013 um 10:34 schrieb Stefan Hajnoczi <stefa...@gmail.com>:
> 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. You mean, adding bdrv_make_empty as a function to block.c calling drv->bdrv_make_empty if it is defined? Peter > > Stefan