Wouter Verhelst
2020-Feb-12 07:27 UTC
Re: [Libguestfs] Cross-project NBD extension proposal: NBD_INFO_INIT_STATE
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. -- To the thief who stole my anti-depressants: I hope you're happy -- seen somewhere on the Internet on a photo of a billboard
Eric Blake
2020-Feb-12 12:09 UTC
Re: [Libguestfs] Cross-project NBD extension proposal: NBD_INFO_INIT_STATE
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? 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? -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org
Richard W.M. Jones
2020-Feb-12 12:36 UTC
Re: [Libguestfs] Cross-project NBD extension proposal: NBD_INFO_INIT_STATE
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
Possibly Parallel Threads
- Re: Cross-project NBD extension proposal: NBD_INFO_INIT_STATE
- Re: Cross-project NBD extension proposal: NBD_INFO_INIT_STATE
- Re: Cross-project NBD extension proposal: NBD_INFO_INIT_STATE
- Re: Cross-project NBD extension proposal: NBD_INFO_INIT_STATE
- Re: Cross-project NBD extension proposal: NBD_INFO_INIT_STATE