• P
    memory: include DIRTY_MEMORY_MIGRATION in the dirty log mask · 6f6a5ef3
    Paolo Bonzini 提交于
    The separate handling of DIRTY_MEMORY_MIGRATION, which does not
    call log_start/log_stop callbacks when it changes in a region's
    dirty logging mask, has caused several bugs.
    
    One recent example is commit 4cc856fa (kvm-all: Sync dirty-bitmap from
    kvm before kvm destroy the corresponding dirty_bitmap, 2015-04-02).
    Another performance problem is that KVM keeps tracking dirty pages
    after a failed live migration, which causes bad performance due to
    disallowing huge page mapping.
    
    This patch removes the root cause of the problem by reporting
    DIRTY_MEMORY_MIGRATION changes via log_start and log_stop.
    Note that we now have to rebuild the FlatView when global dirty
    logging is enabled or disabled; this ensures that log_start and
    log_stop callbacks are invoked.
    
    This will also be used to make the setting of bitmaps conditional.
    In general, this patch lets users of the memory API ignore the
    global state of dirty logging if they handle dirty logging
    generically per region.
    Reviewed-by: NFam Zheng <famz@redhat.com>
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    6f6a5ef3
memory.c 70.2 KB