[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: |
Juan Quintela |
Subject: |
Re: [Qemu-devel] [PATCH f0r 2.11] runstate/migrate: Two more transitions |
Date: |
Tue, 08 Aug 2017 09:02:54 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) |
"Dr. David Alan Gilbert (git)" <address@hidden> wrote:
> From: "Dr. David Alan Gilbert" <address@hidden>
>
> 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>
Reviewed-by: Juan Quintela <address@hidden>
To answer Peter question:
int vm_stop(RunState state)
{
.... we don't care about this case ....
return do_vm_stop(state);
}
static int do_vm_stop(RunState state)
{
int ret = 0;
if (runstate_is_running()) {
cpu_disable_ticks();
pause_all_vcpus();
runstate_set(state);
vm_state_notify(0, state);
qapi_event_send_stop(&error_abort);
}
bdrv_drain_all();
replay_disable_events();
ret = bdrv_flush_all();
return ret;
}
int runstate_is_running(void)
{
return runstate_check(RUN_STATE_RUNNING);
}
So, "stop" only changes states when we are in RUNNING state.
The idea was that after migration, the only valid command (as in the
film "it should do something")is "run".
Later, Juan.