• K
    qcow2: Gather clusters in a looping loop · ecdd5333
    Kevin Wolf 提交于
    Instead of just checking once in exactly this order if there are
    dependendies, non-COW clusters and new allocation, this starts looping
    around these. This way we can, for example, gather non-COW clusters after
    new allocations as long as the host cluster offsets stay contiguous.
    
    Once handle_dependencies() is extended so that COW areas of in-flight
    allocations can be overwritten, this allows to continue with gathering
    other clusters (we wouldn't be able to do that without this change
    because we would have missed a possible second dependency in one of the
    next clusters).
    
    This means that in the typical sequential write case, we can combine the
    COW overwrite of one cluster with the allocation of the next cluster as
    soon as something like Delayed COW gets actually implemented. It is only
    by avoiding splitting requests this way that Delayed COW actually starts
    improving performance noticably.
    Signed-off-by: NKevin Wolf <kwolf@redhat.com>
    Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
    ecdd5333
044.out 234 字节