[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v5 0/7] Deterministic replay extensions
From: |
Pavel Dovgalyuk |
Subject: |
[Qemu-devel] [PATCH v5 0/7] Deterministic replay extensions |
Date: |
Mon, 14 Mar 2016 10:44:30 +0300 |
User-agent: |
StGit/0.16 |
This set of patches is related to the reverse execution and deterministic
replay of qemu execution. It includes recording and replaying of serial devices
and block devices operations.
With these patches one can record and deterministically replay behavior
of the system with connected disk drives and serial communication ports
(e.g., telnet terminal).
Patches for deterministic replay of the block devices intercept calls of
bdrv coroutine functions at the top of block drivers stack.
To record and replay block operations the drive must be configured
as following:
-drive file=disk.qcow,if=none,id=img-direct
-drive driver=blkreplay,if=none,image=img-direct,id=img-blkreplay
-device ide-hd,drive=img-blkreplay
blkreplay driver should be inserted between disk image and virtual driver
controller. Therefore all disk requests may be recorded and replayed.
v5 changes:
- updated record/replay documentation (as suggested by Paolo Bonzini)
- added record/replay support for qemu_chr_fe_write_all and
qemu_chr_fe_read_all functions
- added protection from chardevs unplugging in record/replay mode (as
suggested by Paolo Bonzini)
- minor chardevs record/replay changes (as suggested by Paolo Bonzini)
- BH replay bugfix was moved to separate patch (as suggested by Stefan
Hajnoczi)
- fixed error message in replay events queue module
v4 changes:
- minor fixes in blkreplay layer (as suggested by Kevin Wolf)
- split qemu_clock_warp into two functions (as suggested by Paolo Bonzini)
v3 changes:
- introduced bdrv_flush callback for block drivers
- introduced block driver for recording block operations (as suggested by
Kevin Wolf)
- added documentation for block record/replay
v2 changes:
- removed obsolete call of qemu_clock_warp
- fixed record/replay of aio_cancel
- simplified call sequence for blk_aio_ functions in non-replay mode (as
suggested by Kevin Wolf)
---
Pavel Dovgalyuk (7):
replay: character devices
icount: remove obsolete warp call
icount: decouple warp calls
block: add flush callback
replay: bh scheduling fix
replay: fix error message
replay: introduce block devices record/replay
block/Makefile.objs | 2 -
block/blkreplay.c | 159 +++++++++++++++++++++++++++++++++++++++++++
block/io.c | 7 ++
cpus.c | 56 ++++++++-------
docs/replay.txt | 37 +++++++++-
gdbstub.c | 2 -
include/block/block_int.h | 7 ++
include/qemu/timer.h | 14 +++-
include/sysemu/char.h | 26 +++++++
include/sysemu/replay.h | 22 ++++++
main-loop.c | 2 -
qemu-char.c | 138 ++++++++++++++++++++++++++++++-------
qemu-timer.c | 4 +
replay/Makefile.objs | 1
replay/replay-char.c | 167 +++++++++++++++++++++++++++++++++++++++++++++
replay/replay-events.c | 41 ++++++++++-
replay/replay-internal.h | 19 +++++
replay/replay.c | 2 -
stubs/clock-warp.c | 2 -
stubs/replay.c | 4 +
20 files changed, 641 insertions(+), 71 deletions(-)
create mode 100755 block/blkreplay.c
create mode 100755 replay/replay-char.c
--
Pavel Dovgalyuk
- [Qemu-devel] [PATCH v5 0/7] Deterministic replay extensions,
Pavel Dovgalyuk <=
- [Qemu-devel] [PATCH v5 1/7] replay: character devices, Pavel Dovgalyuk, 2016/03/14
- [Qemu-devel] [PATCH v5 2/7] icount: remove obsolete warp call, Pavel Dovgalyuk, 2016/03/14
- [Qemu-devel] [PATCH v5 3/7] icount: decouple warp calls, Pavel Dovgalyuk, 2016/03/14
- [Qemu-devel] [PATCH v5 4/7] block: add flush callback, Pavel Dovgalyuk, 2016/03/14
- [Qemu-devel] [PATCH v5 5/7] replay: bh scheduling fix, Pavel Dovgalyuk, 2016/03/14
- [Qemu-devel] [PATCH v5 6/7] replay: fix error message, Pavel Dovgalyuk, 2016/03/14