On Wed, Feb 12, 2020 at 06:09:11AM -0600, Eric Blake wrote:
On 2/12/20 1:27 AM, Wouter Verhelst wrote:
>Hi,
>
>On Mon, Feb 10, 2020 at 10:52:55PM +0000, Richard W.M. Jones wrote:
>>But anyway ... could a flag indicating that the whole image is sparse
>>be useful, either as well as NBD_INIT_SPARSE or instead of it? You
>>could use it to avoid an initial disk trim, which is something that
>>mke2fs does:
>
>Yeah, I think that could definitely be useful. I honestly can't see a
>use for NBD_INIT_SPARSE as defined in this proposal; and I don't think
>it's generally useful to have a feature if we can't think of a use case
>for it (that creates added complexity for no benefit).
>
>If we can find a reasonable use case for NBD_INIT_SPARSE as defined in
>this proposal, then just add a third bit (NBD_INIT_ALL_SPARSE or
>something) that says "the whole image is sparse". Otherwise, I think we
>should redefine NBD_INIT_SPARSE to say that.
Okay, in v2, I will start with just two bits, NBD_INIT_SPARSE
(entire image is sparse, nothing is allocated) and NBD_INIT_ZERO
(entire image reads as zero), and save any future bits for later
additions. Do we think that 16 bits is sufficient for the amount of
initial information likely to be exposed?
So as I understand the proposal, the 16 bit limit comes about because
we want a round 4 byte reply, 16 bits are used by NBD_INFO_INIT_STATE
and that leaves 16 bits feature bits. Therefore the only way to go
from there is to have 32 feature bits but an awkward unaligned 6 byte
structure, or 48 feature bits (8 byte structure).
I guess given those constraints we can stick with 16 feature bits, and
if we ever needed more then we'd have to introduce NBD_INFO_INIT_STATE2.
The only thing I can think of which might be useful is a "fully
preallocated" bit which might be used as an indication that writes are
fast and are unlikely to fail with ENOSPC.
Are we in agreement that
my addition of an NBD_INFO_ response to NBD_OPT_GO is the best way
to expose initial state bits?
Seems reasonable to me.
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW