• Mike Snitzer's avatar
    dm snapshot: merge consecutive chunks together · 8a2d5286
    Mike Snitzer authored
    s->store->type->prepare_merge returns the number of chunks that can be
    copied linearly working backwards from the returned chunk number.
    
    For example, if it returns 3 chunks with old_chunk == 10 and new_chunk
    == 20, then chunk 20 can be copied to 10, chunk 19 to 9 and 18 to 8.
    
    Until now kcopyd only copied one chunk at a time.  This patch now copies
    the full set at once.
    
    Consequently, snapshot_merge_process() needs to delay the merging of all
    chunks if any have writes in progress, not just the first chunk in the
    region that is to be merged.
    
    snapshot-merge's performance is now comparable to the original
    snapshot-origin target.
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
    8a2d5286
dm-snap.c 52.1 KB