qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
To: qemu-devel@nongnu.org
Cc: edgar.iglesias@xilinx.com, peter.maydell@linaro.org,
	igor.rubinov@gmail.com, alex.bennee@linaro.org,
	mark.burton@greensocs.com, real@ispras.ru, hines@cert.org,
	batuzovk@ispras.ru, maria.klimushenkova@ispras.ru,
	pavel.dovgaluk@ispras.ru, pbonzini@redhat.com, kwolf@redhat.com,
	stefanha@redhat.com, fred.konrad@greensocs.com
Subject: [Qemu-devel] [PATCH v4 0/5] Deterministic replay extensions
Date: Thu, 10 Mar 2016 14:55:52 +0300	[thread overview]
Message-ID: <20160310115551.4812.55431.stgit@PASHA-ISP> (raw)

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.

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 (5):
      replay: character devices
      icount: remove obsolete warp call
      icount: decouple warp calls
      block: add flush callback
      replay: introduce block devices record/replay


 block/Makefile.objs       |    2 -
 block/blkreplay.c         |  159 +++++++++++++++++++++++++++++++++++++++++++++
 block/io.c                |    7 ++
 cpus.c                    |   56 +++++++++-------
 docs/replay.txt           |   20 ++++++
 gdbstub.c                 |    2 -
 include/block/block_int.h |    7 ++
 include/qemu/timer.h      |   14 +++-
 include/sysemu/char.h     |   26 +++++++
 include/sysemu/replay.h   |   17 +++++
 main-loop.c               |    2 -
 qemu-char.c               |   56 ++++++++++++++--
 qemu-timer.c              |    4 +
 replay/Makefile.objs      |    1 
 replay/replay-char.c      |   98 ++++++++++++++++++++++++++++
 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, 512 insertions(+), 47 deletions(-)
 create mode 100755 block/blkreplay.c
 create mode 100755 replay/replay-char.c

-- 
Pavel Dovgalyuk

             reply	other threads:[~2016-03-10 11:56 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-10 11:55 Pavel Dovgalyuk [this message]
2016-03-10 11:55 ` [Qemu-devel] [PATCH v4 1/5] replay: character devices Pavel Dovgalyuk
2016-03-10 12:24   ` Paolo Bonzini
2016-03-11  6:19     ` Pavel Dovgalyuk
2016-03-11 10:06       ` Paolo Bonzini
2016-03-10 11:56 ` [Qemu-devel] [PATCH v4 2/5] icount: remove obsolete warp call Pavel Dovgalyuk
2016-03-10 12:11   ` Paolo Bonzini
2016-03-10 11:56 ` [Qemu-devel] [PATCH v4 3/5] icount: decouple warp calls Pavel Dovgalyuk
2016-03-10 12:10   ` Paolo Bonzini
2016-03-10 13:19     ` Pavel Dovgalyuk
2016-03-10 13:39       ` Paolo Bonzini
2016-03-10 11:56 ` [Qemu-devel] [PATCH v4 4/5] block: add flush callback Pavel Dovgalyuk
2016-03-10 11:56 ` [Qemu-devel] [PATCH v4 5/5] replay: introduce block devices record/replay Pavel Dovgalyuk
2016-03-11 13:58   ` Stefan Hajnoczi
2016-03-14  5:52     ` Pavel Dovgalyuk
2016-03-11 13:59   ` Stefan Hajnoczi
2016-03-14  5:53     ` Pavel Dovgalyuk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160310115551.4812.55431.stgit@PASHA-ISP \
    --to=pavel.dovgaluk@ispras.ru \
    --cc=alex.bennee@linaro.org \
    --cc=batuzovk@ispras.ru \
    --cc=edgar.iglesias@xilinx.com \
    --cc=fred.konrad@greensocs.com \
    --cc=hines@cert.org \
    --cc=igor.rubinov@gmail.com \
    --cc=kwolf@redhat.com \
    --cc=maria.klimushenkova@ispras.ru \
    --cc=mark.burton@greensocs.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=real@ispras.ru \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).