Skip to content
  • Longpeng (Mike)'s avatar
    6ba11211
    migration: handle CANCELLING state in migration_completion() · 6ba11211
    Longpeng (Mike) authored
    
    
    The following sequence may cause the VM abort during migration:
    
    1. RUN_STATE_RUNNING,MIGRATION_STATUS_ACTIVE
    
    2. before call migration_completion(), we send migrate_cancel
       QMP command, the state machine is changed to:
         RUN_STATE_RUNNING,MIGRATION_STATUS_CANCELLING
    
    3. call migration_completion(), and the state machine is
       switch to: RUN_STATE_RUNNING,MIGRATION_STATUS_COMPLETED
    
    4. call migration_iteration_finish(), because the migration
       status is COMPLETED, so it will try to set the runstate
       to POSTMIGRATE, but RUNNING-->POSTMIGRATE is an invalid
       transition, so abort().
    
    The migration_completion() should not change the migration state
    to COMPLETED if it is already changed to CANCELLING.
    
    Signed-off-by: default avatarLongpeng(Mike) <longpeng2@huawei.com>
    Message-Id: <20201105091726.148-1-longpeng2@huawei.com>
    Reviewed-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
    Signed-off-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
    6ba11211
    migration: handle CANCELLING state in migration_completion()
    Longpeng (Mike) authored
    
    
    The following sequence may cause the VM abort during migration:
    
    1. RUN_STATE_RUNNING,MIGRATION_STATUS_ACTIVE
    
    2. before call migration_completion(), we send migrate_cancel
       QMP command, the state machine is changed to:
         RUN_STATE_RUNNING,MIGRATION_STATUS_CANCELLING
    
    3. call migration_completion(), and the state machine is
       switch to: RUN_STATE_RUNNING,MIGRATION_STATUS_COMPLETED
    
    4. call migration_iteration_finish(), because the migration
       status is COMPLETED, so it will try to set the runstate
       to POSTMIGRATE, but RUNNING-->POSTMIGRATE is an invalid
       transition, so abort().
    
    The migration_completion() should not change the migration state
    to COMPLETED if it is already changed to CANCELLING.
    
    Signed-off-by: default avatarLongpeng(Mike) <longpeng2@huawei.com>
    Message-Id: <20201105091726.148-1-longpeng2@huawei.com>
    Reviewed-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
    Signed-off-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
Loading