qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v7 17/19] replay: add BH oneshot event for block


From: Kevin Wolf
Subject: Re: [Qemu-devel] [PATCH v7 17/19] replay: add BH oneshot event for block layer
Date: Wed, 28 Nov 2018 17:01:41 +0100
User-agent: Mutt/1.10.1 (2018-07-13)

Am 10.10.2018 um 15:35 hat Pavel Dovgalyuk geschrieben:
> Replay is capable of recording normal BH events, but sometimes
> there are single use callbacks scheduled with aio_bh_schedule_oneshot
> function. This patch enables recording and replaying such callbacks.
> Block layer uses these events for calling the completion function.
> Replaying these calls makes the execution deterministic.
> 
> Signed-off-by: Pavel Dovgalyuk <address@hidden>

What are the rules for using aio_bh_schedule_oneshot() vs.
replay_bh_schedule_oneshot_event()? You are modifying one place, but if
I grep for aio_bh_schedule_oneshot(), I find many other places that
use it. Why is this one place special?

> --
> 
> v6:
>  - moved stub function to the separate file for fixing linux-user build
> ---
>  block/block-backend.c    |    3 ++-
>  include/sysemu/replay.h  |    3 +++
>  replay/replay-events.c   |   16 ++++++++++++++++
>  replay/replay-internal.h |    1 +
>  replay/replay.c          |    2 +-
>  stubs/Makefile.objs      |    1 +
>  stubs/replay-user.c      |    9 +++++++++
>  7 files changed, 33 insertions(+), 2 deletions(-)
>  create mode 100644 stubs/replay-user.c
> 
> diff --git a/block/block-backend.c b/block/block-backend.c
> index dc0cd57..04f5554 100644
> --- a/block/block-backend.c
> +++ b/block/block-backend.c
> @@ -17,6 +17,7 @@
>  #include "block/throttle-groups.h"
>  #include "sysemu/blockdev.h"
>  #include "sysemu/sysemu.h"
> +#include "sysemu/replay.h"
>  #include "qapi/error.h"
>  #include "qapi/qapi-events-block.h"
>  #include "qemu/id.h"
> @@ -1379,7 +1380,7 @@ static BlockAIOCB *blk_aio_prwv(BlockBackend *blk, 
> int64_t offset, int bytes,
>  
>      acb->has_returned = true;
>      if (acb->rwco.ret != NOT_DONE) {
> -        aio_bh_schedule_oneshot(blk_get_aio_context(blk),
> +        replay_bh_schedule_oneshot_event(blk_get_aio_context(blk),
>                                  blk_aio_complete_bh, acb);

Indentation is off.

Kevin



reply via email to

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