diff --git a/cpus.c b/cpus.c index 2a2f633036de7b8b6db86eff91cd13b478690dc2..65b0b0e606275d7d5dfa01d0b424fd692ca8d94b 100644 --- a/cpus.c +++ b/cpus.c @@ -446,11 +446,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; } @@ -1120,7 +1121,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(); } }