----- Original Message -----
> From: "Pavel Dovgalyuk" <pavel.dovga...@ispras.ru>
> To: qemu-devel@nongnu.org
> Cc: pbonz...@redhat.com, jasow...@redhat.com, ag...@suse.de, 
> da...@gibson.dropbear.id.au
> Sent: Wednesday, June 8, 2016 7:14:04 AM
> Subject: [PATCH 2/3] replay: allow replay stopping and restarting
> 
> This patch fixes bug with stopping and restarting replay
> through monitor.
> 
> Signed-off-by: Pavel Dovgalyuk <pavel.dovga...@ispras.ru>
> ---
>  block/blkreplay.c        |   18 +++++++++++++-----
>  cpus.c                   |    1 +
>  include/sysemu/replay.h  |    2 ++
>  replay/replay-internal.h |    2 --
>  vl.c                     |    1 +
>  5 files changed, 17 insertions(+), 7 deletions(-)
> 
> diff --git a/block/blkreplay.c b/block/blkreplay.c
> index 42f1813..438170c 100644
> --- a/block/blkreplay.c
> +++ b/block/blkreplay.c
> @@ -70,6 +70,14 @@ static void blkreplay_bh_cb(void *opaque)
>      g_free(req);
>  }
>  
> +static uint64_t blkreplay_next_id(void)
> +{
> +    if (replay_events_enabled()) {
> +        return request_id++;
> +    }
> +    return 0;
> +}

What happens if 0 is returned?  I think that you want to call
replay_disable_events...

>      bdrv_drain_all();

... after this bdrv_drain_all.

I was going to suggest using qemu_add_vm_change_state_handler
in replay_start (which could have replaced the existing call
to replay_enable_events), but that's not possible if you have
to do your calls after bdrv_drain_all.

Thanks,

Paolo

Reply via email to