On 10/7/20 6:52 AM, Alberto Garcia wrote: > The QCowL2Meta structure is used to store information about a part of > a write request that touches clusters that need changes in their L2 > entries. This happens with newly-allocated clusters or subclusters. > > This structure has changed a bit since it was first created and its > current documentation is not quite up-to-date. > > A write request can span a region consisting on a combination of s/on/of/ > clusters of different types, and qcow2_alloc_host_offset() can > repeatedly call handle_copied() and handle_alloc() to add more > clusters to the mix as long as they all are contiguous on the image > file. > > Because of this a write request has a list of QCowL2Meta structures, > one for each part of the request that needs changes in the L2 > metadata. > > Each one of them spans nb_clusters and has two copy-on-write regions > located immediately before and after the middle region that that part > of the write request touches. Even when those regions themselves are Grammatically correct, but the doubled 'that' caught me on my first read. Maybe you want: s/that that part of the write request touches/touched by that part of the write request/ > empty their offsets must be correct because they are used to know the > location of the middle region. > > This was not always the case but it is not a problem anymore > because the only two places where QCowL2Meta structures are created > (calculate_l2_meta() and qcow2_co_truncate()) ensure that the > copy-on-write regions are correctly defined, and so do assertions like > the ones in perform_cow(). > > The conditional initialization of the 'written_to' variable is > therefore unnecessary and is removed by this patch. > > Signed-off-by: Alberto Garcia > --- Reviewed-by: Eric Blake -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org