Ping?
Pavel Dovgalyuk
Pavel Dovgalyuk писал 2016-03-01 14:07:
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.
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 (5):
replay: character devices
icount: remove obsolete warp call
replay: introduce new checkpoint for icount warp
block: add flush callback
replay: introduce block devices record/replay
block/Makefile.objs | 2 -
block/blkreplay.c | 156
+++++++++++++++++++++++++++++++++++++++++++++
block/io.c | 6 ++
cpus.c | 10 +--
docs/replay.txt | 20 ++++++
gdbstub.c | 2 -
include/block/block_int.h | 7 ++
include/qemu/timer.h | 3 +
include/sysemu/char.h | 26 ++++++++
include/sysemu/replay.h | 15 ++++
main-loop.c | 2 -
qemu-char.c | 56 ++++++++++++++--
qemu-timer.c | 2 -
replay/Makefile.objs | 1
replay/replay-char.c | 97 ++++++++++++++++++++++++++++
replay/replay-events.c | 41 ++++++++++--
replay/replay-internal.h | 16 +++++
replay/replay.c | 25 +++++++
stubs/clock-warp.c | 2 -
stubs/replay.c | 4 +
20 files changed, 469 insertions(+), 24 deletions(-)
create mode 100755 block/blkreplay.c
create mode 100755 replay/replay-char.c