On Wed 16 Sep 2020 02:20:04 PM CEST, Vladimir Sementsov-Ogievskiy <[email protected]> wrote: > bdrv_co_block_status_above has several design problems with handling > short backing files: > > 1. With want_zeros=true, it may return ret with BDRV_BLOCK_ZERO but > without BDRV_BLOCK_ALLOCATED flag, when actually short backing file > which produces these after-EOF zeros is inside requested backing > sequence. > > 2. With want_zero=false, it may return pnum=0 prior to actual EOF, > because of EOF of short backing file. > > Fix these things, making logic about short backing files clearer. > > With fixed bdrv_block_status_above we also have to improve is_zero in > qcow2 code, otherwise iotest 154 will fail, because with this patch we > stop to merge zeros of different types (produced by fully unallocated > in the whole backing chain regions vs produced by short backing files). > > Note also, that this patch leaves for another day the general problem > around block-status: misuse of BDRV_BLOCK_ALLOCATED as is-fs-allocated > vs go-to-backing. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Reviewed-by: Alberto Garcia <[email protected]> Berto
