Skip to content
  • chai wen's avatar
    block: fix wrong order in live block migration setup · 1ac362cd
    chai wen authored
    
    
    The function init_blk_migration is better to be called before
    set_dirty_tracking as the reasons below.
    
    If we want to track dirty blocks via dirty_maps on a BlockDriverState
    when doing live block-migration, its correspoding 'BlkMigDevState' should be
    added to block_mig_state.bmds_list first for subsequent processing.
    Otherwise set_dirty_tracking will do nothing on an empty list than allocating
    dirty_bitmaps for them. And bdrv_get_dirty_count will access the
    bmds->dirty_maps directly, then there would be a segfault triggered.
    
    If the set_dirty_tracking fails, qemu_savevm_state_cancel will handle
    the cleanup of init_blk_migration automatically.
    
    Reviewed-by: default avatarFam Zheng <famz@redhat.com>
    Signed-off-by: default avatarchai wen <chaiw.fnst@cn.fujitsu.com>
    Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    1ac362cd