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


Reply via email to