qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] Fix the vm state after vm migration when vm pan


From: hangaohuai
Subject: Re: [Qemu-devel] [PATCH] Fix the vm state after vm migration when vm panic
Date: Tue, 7 Mar 2017 14:54:06 +0800
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20120327 Thunderbird/11.0.1

debugging the migration step with the same steps.
with
libvirt version:1.3.4
qemu version:2.8.50

I found qemu held the right state.
But libvirt will send cont at the end of the migration, it will rewrite the 
vm's state.

after migration
HOSTA                             |               HOSTB
virsh list   vm crashed           ->    virsh list   vm running

I will check the new libvirt about handling the state.

Thanks

On 2017/3/7 2:11, Paolo Bonzini wrote:
>
> On 06/03/2017 15:05, hangaohuai wrote:
>> Bug steps:
>> 1. windows VM with pvpanic device:<panic model='isa'/>in xml
>> 2. inject the panic in windows, the vm state is paused (guest-panicked)
>> 3. migrate the vm to other host, vm state is running
>>
>> Check the vmstate before runstate_set(RUN_STATE_RUNNING)
> What's the backtrace for runstate_set(RUN_STATE_RUNNING)?
>
> This should be triggered:
>
>     if (!global_state_received() ||
>         global_state_get_runstate() == RUN_STATE_RUNNING) {
>         if (autostart) {
>             vm_start();
>         } else {
>             runstate_set(RUN_STATE_PAUSED);
>         }
>     } else {
>         runstate_set(global_state_get_runstate());   /* <<<< */
>     }
>
> I also suggest a testcase to tests/pvpanic-test.c.
>
> Paolo
>
>> Signed-off-by: hangaohuai <address@hidden>
>> ---
>>  cpus.c                  | 3 +++
>>  include/sysemu/sysemu.h | 1 +
>>  vl.c                    | 5 +++++
>>  3 files changed, 9 insertions(+)
>>
>> diff --git a/cpus.c b/cpus.c
>> index c857ad2..37b93aa 100644
>> --- a/cpus.c
>> +++ b/cpus.c
>> @@ -1734,6 +1734,9 @@ int vm_prepare_start(void)
>>      if (runstate_is_running()) {
>>          qapi_event_send_stop(&error_abort);
>>          res = -1;
>> +    } else if (runstate_is_paniced()) {
>> +        qemu_system_guest_panicked(NULL);
>> +        res = -1;
>>      } else {
>>          replay_enable_events();
>>          cpu_enable_ticks();
> .
>





reply via email to

[Prev in Thread] Current Thread [Next in Thread]