20.11.2019 18:18, Alberto Garcia wrote: > On Wed 20 Nov 2019 01:27:53 PM CET, Vladimir Semeeausntsov-Ogievskiy wrote: > >> 3. Also, the latter way is inconsistent with discard. Discarded >> regions returns zeroes, not clusters from backing. I think discard and >> truncate should behave in the same safe zero way. > > But then PREALLOC_MODE_OFF implies that the L2 metadata should be > preallocated (all clusters should be QCOW2_CLUSTER_ZERO_PLAIN), at least > when there is a backing file. > > Or maybe we just forbid PREALLOC_MODE_OFF during resize if there is a > backing file ? >
Kevin proposed a fix that alters PREALLOC_MODE_OFF behavior if there is a backing file, to allocate L2 metadata with ZERO clusters.. I don't think that it's the best thing to do, but it's already done, it works and seems appropriate for rc3.. I see now, that change PREALLOC_MODE_OFF behavior may break things, first of all qemu-img create, which creating UNALLOCATED qcow2 by default for years. Still, I think that it would be safer to always ZERO expanded part of qcow2, regardless of backing file.. We may add PREALLOC_MODE_ZERO, and use it in mirror, commit, and some other calls to bdrv_truncate, except for qcow2 image creation of course. Then, to improve this mode handling in qcow2, to not allocate all L2 tables, we may add "zero" bit to L1 table entry. -- Best regards, Vladimir