• P
    mirror: perform COW if the cluster size is bigger than the granularity · b812f671
    Paolo Bonzini 提交于
    When mirroring runs, the backing files for the target may not yet be
    ready.  However, this means that a copy-on-write operation on the target
    would fill the missing sectors with zeros.  Copy-on-write only happens
    if the granularity of the dirty bitmap is smaller than the cluster size
    (and only for clusters that are allocated in the source after the job
    has started copying).  So far, the granularity was fixed to 1MB; to avoid
    the problem we detected the situation and required the backing files to
    be available in that case only.
    
    However, we want to lower the granularity for efficiency, so we need
    a better solution.  The solution is to always copy a whole cluster the
    first time it is touched.  The code keeps a bitmap of clusters that
    have already been allocated by the mirroring job, and only does "manual"
    copy-on-write if the chunk being copied is zero in the bitmap.
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: NKevin Wolf <kwolf@redhat.com>
    b812f671
mirror.c 12.0 KB