[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH f0r 2.11] runstate/migrate: Two more transitions
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH f0r 2.11] runstate/migrate: Two more transitions |
Date: |
Sat, 9 Sep 2017 15:57:41 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 |
On 06/09/2017 15:40, Dr. David Alan Gilbert wrote:
>> There's a race if someone does a 'stop' near the end of migrate;
>> the migration process goes through two runstates:
>> 'finish migrate'
>> 'postmigrate'
>>
>> If the user issues a 'stop' between the two we end up with invalid
>> state transitions.
>> Add the transitions as valid.
>>
>> Signed-off-by: Dr. David Alan Gilbert <address@hidden>
> Queued
>
>> ---
>> vl.c | 2 ++
>> 1 file changed, 2 insertions(+)
>>
>> diff --git a/vl.c b/vl.c
>> index 99fcfa0442..bacb03f49d 100644
>> --- a/vl.c
>> +++ b/vl.c
>> @@ -621,6 +621,7 @@ static const RunStateTransition
>> runstate_transitions_def[] = {
>>
>> { RUN_STATE_PAUSED, RUN_STATE_RUNNING },
>> { RUN_STATE_PAUSED, RUN_STATE_FINISH_MIGRATE },
>> + { RUN_STATE_PAUSED, RUN_STATE_POSTMIGRATE },
There is:
if (s->state == MIGRATION_STATUS_COMPLETED) {
...
runstate_set(RUN_STATE_POSTMIGRATE);
} else {
...
if (old_vm_running && !entered_postcopy) {
vm_start();
} else {
if (runstate_check(RUN_STATE_FINISH_MIGRATE)) {
runstate_set(RUN_STATE_POSTMIGRATE);
}
}
}
Maybe the runstate_check should be in the "then" branch too, instead
of adding this transition?
Paolo
>> { RUN_STATE_PAUSED, RUN_STATE_PRELAUNCH },
>> { RUN_STATE_PAUSED, RUN_STATE_COLO},
>>
>> @@ -633,6 +634,7 @@ static const RunStateTransition
>> runstate_transitions_def[] = {
>> { RUN_STATE_PRELAUNCH, RUN_STATE_INMIGRATE },
>>
>> { RUN_STATE_FINISH_MIGRATE, RUN_STATE_RUNNING },
>> + { RUN_STATE_FINISH_MIGRATE, RUN_STATE_PAUSED },
>> { RUN_STATE_FINISH_MIGRATE, RUN_STATE_POSTMIGRATE },
>> { RUN_STATE_FINISH_MIGRATE, RUN_STATE_PRELAUNCH },
>> { RUN_STATE_FINISH_MIGRATE, RUN_STATE_COLO},
>> --
>> 2.13.3
>>
>>