qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] cpus: Let vm_stop[_force_state]() always flush


From: Kevin Wolf
Subject: Re: [Qemu-devel] [PATCH] cpus: Let vm_stop[_force_state]() always flush block devices
Date: Thu, 18 Jul 2013 14:55:48 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

Am 18.07.2013 um 14:52 hat Kevin Wolf geschrieben:
> Even if the VM is already stopped, we cannot assume that all data has
> already been successfully flushed to disk. The flush during the previous
> vm_stop() could have failed.
> 
> Run bdrv_flush_all() unconditionally so that we get an error each time
> if the block device isn't really flushed.
> 

Oops, forgot it again:

Cc: address@hidden

> Signed-off-by: Kevin Wolf <address@hidden>
> ---
>  cpus.c | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/cpus.c b/cpus.c
> index 8062cdd..2509eb5 100644
> --- a/cpus.c
> +++ b/cpus.c
> @@ -443,11 +443,12 @@ static int do_vm_stop(RunState state)
>          pause_all_vcpus();
>          runstate_set(state);
>          vm_state_notify(0, state);
> -        bdrv_drain_all();
> -        ret = bdrv_flush_all();
>          monitor_protocol_event(QEVENT_STOP, NULL);
>      }
>  
> +    bdrv_drain_all();
> +    ret = bdrv_flush_all();
> +
>      return ret;
>  }
>  
> @@ -1126,7 +1127,9 @@ int vm_stop_force_state(RunState state)
>          return vm_stop(state);
>      } else {
>          runstate_set(state);
> -        return 0;
> +        /* Make sure to return an error if the flush in a previous vm_stop()
> +         * failed. */
> +        return bdrv_flush_all();
>      }
>  }
>  
> -- 
> 1.8.1.4
> 



reply via email to

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