aboutsummaryrefslogtreecommitdiff
path: root/block/null.c
diff options
context:
space:
mode:
authorPavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>2019-09-17 14:58:19 +0300
committerKevin Wolf <kwolf@redhat.com>2019-10-14 17:12:48 +0200
commite4ec5ad464e48ab8d978b4dd8aacd05c1c4a87cc (patch)
treefb5bb4af2ee8c376cb3a237c46604a283514e208 /block/null.c
parentae25dccb7df64ec9cbb52d7a0a67308d74372cfd (diff)
downloadqemu-e4ec5ad464e48ab8d978b4dd8aacd05c1c4a87cc.zip
qemu-e4ec5ad464e48ab8d978b4dd8aacd05c1c4a87cc.tar.gz
qemu-e4ec5ad464e48ab8d978b4dd8aacd05c1c4a87cc.tar.bz2
replay: add BH oneshot event for block layer
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 <Pavel.Dovgaluk@ispras.ru> Acked-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block/null.c')
-rw-r--r--block/null.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/block/null.c b/block/null.c
index 699aa29..15e1d56 100644
--- a/block/null.c
+++ b/block/null.c
@@ -17,6 +17,7 @@
#include "qemu/module.h"
#include "qemu/option.h"
#include "block/block_int.h"
+#include "sysemu/replay.h"
#define NULL_OPT_LATENCY "latency-ns"
#define NULL_OPT_ZEROES "read-zeroes"
@@ -179,7 +180,8 @@ static inline BlockAIOCB *null_aio_common(BlockDriverState *bs,
timer_mod_ns(&acb->timer,
qemu_clock_get_ns(QEMU_CLOCK_REALTIME) + s->latency_ns);
} else {
- aio_bh_schedule_oneshot(bdrv_get_aio_context(bs), null_bh_cb, acb);
+ replay_bh_schedule_oneshot_event(bdrv_get_aio_context(bs),
+ null_bh_cb, acb);
}
return &acb->common;
}