[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH V3 5/6] block/rbd: add write zeroes support
From: |
Peter Lieven |
Subject: |
Re: [PATCH V3 5/6] block/rbd: add write zeroes support |
Date: |
Fri, 18 Jun 2021 11:00:38 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 |
Am 16.06.21 um 14:34 schrieb Ilya Dryomov:
> On Wed, May 19, 2021 at 4:28 PM Peter Lieven <pl@kamp.de> wrote:
>> Signed-off-by: Peter Lieven <pl@kamp.de>
>> ---
>> block/rbd.c | 37 ++++++++++++++++++++++++++++++++++++-
>> 1 file changed, 36 insertions(+), 1 deletion(-)
>>
>> diff --git a/block/rbd.c b/block/rbd.c
>> index 0d8612a988..ee13f08a74 100644
>> --- a/block/rbd.c
>> +++ b/block/rbd.c
>> @@ -63,7 +63,8 @@ typedef enum {
>> RBD_AIO_READ,
>> RBD_AIO_WRITE,
>> RBD_AIO_DISCARD,
>> - RBD_AIO_FLUSH
>> + RBD_AIO_FLUSH,
>> + RBD_AIO_WRITE_ZEROES
>> } RBDAIOCmd;
>>
>> typedef struct BDRVRBDState {
>> @@ -705,6 +706,10 @@ static int qemu_rbd_open(BlockDriverState *bs, QDict
>> *options, int flags,
>> }
>> }
>>
>> +#ifdef LIBRBD_SUPPORTS_WRITE_ZEROES
>> + bs->supported_zero_flags = BDRV_REQ_MAY_UNMAP;
> I wonder if we should also set BDRV_REQ_NO_FALLBACK here since librbd
> does not really have a notion of non-efficient explicit zeroing.
This is only true if thick provisioning is supported which is in Octopus
onwards, right?
So it would only be correct to set this if thick provisioning is supported
otherwise we could
fail with ENOTSUP and then qemu emulates the zeroing with plain writes.
Peter