On Thu, Mar 24, 2016 at 05:07:47PM +0100, Kevin Wolf wrote: > Am 24.03.2016 um 17:04 hat Eric Blake geschrieben: > > On 03/24/2016 09:53 AM, Wouter Verhelst wrote: > > > On Thu, Mar 24, 2016 at 04:33:42PM +0100, Paolo Bonzini wrote: > > >> On 24/03/2016 16:25, Eric Blake wrote: > > >>>> However, let's make these bits, so that > > >>>> > > >>>> NBD_STATE_ALLOCATED (0x1), LBA extent is present on the block device > > >>>> NBD_STATE_ZERO (0x2), LBA extent will read as zeroes > > >>> > > >>> Should we flip the sense and call this NBD_STATE_UNALLOCATED (0 means > > >>> allocated, 1 means not present), so that an overall status of 0 is a > > >>> safe default? > > >> > > >> Double negations are evil (and don't work the same in all languages), so > > >> I think it's a worse option. > > > > > > I agree that a bit which says "unallocated" is confusing in that manner, > > > but that just means we need a better name (one that doesn't contain > > > "un-" or "not") > > > > > > I like the idea of having zero be the "sensible" default, although I'm > > > quite unable to come up with a better name myself. > > > > NBD_STATE_TRIM, perhaps? (0 for present, 1 for trimmed or unallocated); > > matches well that we have NBD_CMD_TRIM for requesting the creation of > > such a state. > > How about NBD_STATE_HOLE? Both will work, although I like NBD_STATE_TRIM slightly better because it indeed nicely references NBD_CMD_TRIM. However, I also think it should then be made clear that issuing NBD_CMD_TRIM doesn't *require* that GET_BLOCK returns NBD_STATE_TRIM for that region if the backend storage format dosn't support that, to avoid confusion later on. -- < ron> I mean, the main *practical* problem with C++, is there's like a dozen people in the world who think they really understand all of its rules, and pretty much all of them are just lying to themselves too. -- #debian-devel, OFTC, 2016-02-12