[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [Nbd] [PATCH 2/2] NBD proto: add GET_LBA_STATUS extensi
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-devel] [Nbd] [PATCH 2/2] NBD proto: add GET_LBA_STATUS extension |
Date: |
Wed, 23 Mar 2016 19:14:54 +0100 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Am 23.03.2016 um 18:58 hat Wouter Verhelst geschrieben:
> On Wed, Mar 23, 2016 at 05:16:02PM +0300, Denis V. Lunev wrote:
> > + The type of information required by the client is passed to server in
> > the
> > + command flags field. If the server does not implement requested type or
> > + have no means to express it, it MUST NOT return an error, but instead
> > MUST
> > + return a single LBA status descriptor with *offset* and *length* equal
> > to
> > + the *offset* and *length* from request, and *status* set to `0`.
> > +
> > + The following request types are currently defined for the command:
> > +
> > + 1. Block provisioning state
> > +
> > + Upon receiving an `NBD_CMD_GET_LBA_STATUS` command with command flags
> > + field set to `NBD_FLAG_GET_ALLOCATED` (0x0), the server MUST return
>
> I prefer to have a non-zero flag value.
>
> > + the provisioning state of the device. The following provisionnig states
> > + are defined for the command:
> > +
> > + - `NBD_STATE_ALLOCATED` (0x0), LBA extent is present on the block
> > device;
> > + - `NBD_STATE_ZEROED` (0x1), LBA extent is present on the block device
> > + and contains zeroes;
>
> Presumably this should be "contains only zeroes"?
>
> Also, this may end up being a fairly expensive call for the server to
> process. Is it really useful?
I think we need to make clear that this is meant as an optimisation and
it's always a valid option for a server to return NBD_STATE_ALLOCATED
even if the contents is zeroed.
It is definitely useful if the server has a means to efficiently find
out the allocation status (e.g. SEEK_HOLE). In that case the client may
be able to avoid reading the block and sending it over the network, or
when making a copy, it could use it to keep the target file sparse. If
the client can't take advantage, we didn't have much overhead, so it's
fine.
It's less clear in a case where the server needs to read in the block
and scan its contents. It could still be a net win if the next thing the
client does is retrieving the block: The server would still have the
cost of reading the block, but it wouldn't be transferred. But when the
client doesn't follow up with a read, it's quite a bit of overhead that
we had for no benefit. Returning NBD_STATE_ALLOCATED might be more
appropriate in this case than scanning for zeros.
Kevin
pgpR_qmddlASq.pgp
Description: PGP signature
[Qemu-devel] [PATCH 2/2] NBD proto: add GET_LBA_STATUS extension, Denis V. Lunev, 2016/03/23
Re: [Qemu-devel] [Nbd] [PATCH 2/2] NBD proto: add GET_LBA_STATUS extension, Wouter Verhelst, 2016/03/23
Re: [Qemu-devel] [Nbd] [PATCH 2/2] NBD proto: add GET_LBA_STATUS extension, Pavel Borzenkov, 2016/03/24
Re: [Qemu-devel] [Nbd] [PATCH 2/2] NBD proto: add GET_LBA_STATUS extension, Wouter Verhelst, 2016/03/24
Re: [Qemu-devel] [Nbd] [PATCH 2/2] NBD proto: add GET_LBA_STATUS extension, Alex Bligh, 2016/03/24
Re: [Qemu-devel] [Nbd] [PATCH 2/2] NBD proto: add GET_LBA_STATUS extension, Paolo Bonzini, 2016/03/24
Re: [Qemu-devel] [Nbd] [PATCH 2/2] NBD proto: add GET_LBA_STATUS extension, Alex Bligh, 2016/03/24
Re: [Qemu-devel] [Nbd] [PATCH 2/2] NBD proto: add GET_LBA_STATUS extension, Paolo Bonzini, 2016/03/24