On 08/28/2017 01:56 AM, Liu Qing wrote: > Dear list, > Recently I used fio to test qcow2 driver in the guest os, and found out > that when a new cluster is allocated the 4K IO will occupy 64K(default cluster > size) bandwith. > From the code qcow2 driver will fill the unused part of new allocated > cluster with 0 in perform_cow. These 0s are set in qcow2_co_readv when the > read > destination is not allocated and it has no backing file. Could I forbidden any > further write in copy_sectors if the copy source is not allocated and it has > no backing file? So only the requested data is written to the cluster. > Function > copy_sectors is only used by perform_cow in the master branch. > Do you think this change is reasonable? Thanks. > >
CCing qemu-block. If I am understanding you correctly, you're noticing an adverse performance impact from initial writes to unallocated clusters through the qcow2 driver, when qcow2 performs zero-fill of uninitiated clusters. First, can you look at sources for current master branch? it hasn't been named "copy_sectors" since June 2016, and the function looks a bit differently than it did in the version you're looking at, I think. John