From: Kevin Wolf <kwolf@redhat.com>
To: Pavel Dovgalyuk <dovgaluk@ispras.ru>
Cc: peter.maydell@linaro.org, pavel.dovgaluk@ispras.ru,
crosthwaite.peter@gmail.com, ciro.santilli@gmail.com,
jasowang@redhat.com, quintela@redhat.com, qemu-devel@nongnu.org,
armbru@redhat.com, alex.bennee@linaro.org,
'Pavel Dovgalyuk' <pavel.dovgaluk@gmail.com>,
maria.klimushenkova@ispras.ru, mst@redhat.com, kraxel@redhat.com,
boost.lists@gmail.com, thomas.dullien@googlemail.com,
pbonzini@redhat.com, mreitz@redhat.com,
artem.k.pisarenko@gmail.com, dgilbert@redhat.com,
rth@twiddle.net
Subject: Re: [Qemu-devel] [for-4.2 PATCH 3/6] replay: update docs for record/replay with block devices
Date: Thu, 19 Sep 2019 10:53:02 +0200 [thread overview]
Message-ID: <20190919085302.GA10163@localhost.localdomain> (raw)
In-Reply-To: <001501d56e06$bbd7aa30$3386fe90$@ru>
Am 18.09.2019 um 11:52 hat Pavel Dovgalyuk geschrieben:
> > From: Kevin Wolf [mailto:kwolf@redhat.com]
> > Am 18.09.2019 um 11:37 hat Pavel Dovgalyuk geschrieben:
> > > > From: Kevin Wolf [mailto:kwolf@redhat.com]
> > > > Am 18.09.2019 um 11:22 hat Pavel Dovgalyuk geschrieben:
> > > > > > From: Kevin Wolf [mailto:kwolf@redhat.com]
> > > > > > Am 17.09.2019 um 13:58 hat Pavel Dovgalyuk geschrieben:
> > > > > > > From: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
> > > > > > >
> > > > > > > This patch updates the description of the command lines for using
> > > > > > > record/replay with attached block devices.
> > > > > > >
> > > > > > > Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
> > > > > > > ---
> > > > > > > docs/replay.txt | 12 +++++++++---
> > > > > > > 1 file changed, 9 insertions(+), 3 deletions(-)
> > > > > > >
> > > > > > > diff --git a/docs/replay.txt b/docs/replay.txt
> > > > > > > index ee6aee9861..ce97c3f72f 100644
> > > > > > > --- a/docs/replay.txt
> > > > > > > +++ b/docs/replay.txt
> > > > > > > @@ -27,7 +27,7 @@ Usage of the record/replay:
> > > > > > > * First, record the execution with the following command line:
> > > > > > > qemu-system-i386 \
> > > > > > > -icount shift=7,rr=record,rrfile=replay.bin \
> > > > > > > - -drive file=disk.qcow2,if=none,id=img-direct \
> > > > > > > + -drive file=disk.qcow2,if=none,snapshot,id=img-direct \
> > > > > > > -drive driver=blkreplay,if=none,image=img-direct,id=img-blkreplay \
> > > > > > > -device ide-hd,drive=img-blkreplay \
> > > > > > > -netdev user,id=net1 -device rtl8139,netdev=net1 \
> > > > > > > @@ -35,7 +35,7 @@ Usage of the record/replay:
> > > > > > > * After recording, you can replay it by using another command line:
> > > > > > > qemu-system-i386 \
> > > > > > > -icount shift=7,rr=replay,rrfile=replay.bin \
> > > > > > > - -drive file=disk.qcow2,if=none,id=img-direct \
> > > > > > > + -drive file=disk.qcow2,if=none,snapshot,id=img-direct \
> > > > > > > -drive driver=blkreplay,if=none,image=img-direct,id=img-blkreplay \
> > > > > > > -device ide-hd,drive=img-blkreplay \
> > > > > > > -netdev user,id=net1 -device rtl8139,netdev=net1 \
> > > > > > > @@ -223,7 +223,7 @@ Block devices record/replay module intercepts 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.qcow2,if=none,id=img-direct
> > > > > > > + -drive file=disk.qcow2,if=none,snapshot,id=img-direct
> > > > > > > -drive driver=blkreplay,if=none,image=img-direct,id=img-blkreplay
> > > > > > > -device ide-hd,drive=img-blkreplay
> > > > > > >
> > > > > > > @@ -252,6 +252,12 @@ This snapshot is created at start of recording and restored at
> > > > start
> > > > > > > of replaying. It also can be loaded while replaying to roll back
> > > > > > > the execution.
> > > > > > >
> > > > > > > +'snapshot' flag of the disk image must be removed to save the snapshots
> > > > > > > +in the overlay (or original image) instead of using the temporary overlay.
> > > > > > > + -drive file=disk.ovl,if=none,id=img-direct
> > > > > > > + -drive driver=blkreplay,if=none,image=img-direct,id=img-blkreplay
> > > > > > > + -device ide-hd,drive=img-blkreplay
> > > > > >
> > > > > > Wait, didn't patch 2 just make -snapshot unconditionally incompatible
> > > > > > with replay? So isn't saving the snapshot in the original image the only
> > > > > > supported mode now?
> > > > >
> > > > > There are two ways to run record/replay:
> > > > > 1. Disk with snapshot option and any image to make it unchanged
> > > > > 2. Disk with overlay without snapshot option to save VM snapshots on it
> > > >
> > > > Yes, I think I understand the two options that you intend to make
> > > > available, but when -snapshot sets a replay blocker, how can 1. still
> > > > work? Is there some code that ignores replay blockers?
> > >
> > > I checked the text and don't see anything about global "-snapshot" option.
> > > All references are about drive snapshot flag.
> > > Can you point me where did I missed that?
> >
> > Oh, sorry, you're right and I misread.
> >
> > However, global -snapshot is just a convenient shortcut for specifying
> > snapshot=on for all -drive arguments. So if -snapshot is incompatible
> > with replay, shouldn't manually marking all drives as snapshot=on be
> > incompatible as well?
> >
> > Maybe you're really interested in some specific drive not having
> > snapshot=on? But then it might be better to check that specific drive
> > instad of forbidding just the shortcut for setting it.
>
> -snapshot adds the flag for top-level drive, making driver operations
> dependent on temporary file structure.
>
> Moving this overlay beneath blkreplay driver makes drive operations
> deterministic for the top-level device.
So the real requirement is that blkreplay is the top-level node of any
guest device, right? And only because of this, you can't use -snapshot
(or snapshot=on on the blkreplay driver).
If we instead check e.g. in blk_insert_bs() or blk_attach_dev() that in
record/replay mode, the root node of the BlockBackend is blkreplay,
wouldn't we catch many more incorrect setups?
Kevin
next prev parent reply other threads:[~2019-09-19 9:10 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-17 11:57 [Qemu-devel] [for-4.2 PATCH 0/6] Block-related record/replay fixes Pavel Dovgalyuk
2019-09-17 11:57 ` [Qemu-devel] [for-4.2 PATCH 1/6] block: implement bdrv_snapshot_goto for blkreplay Pavel Dovgalyuk
2019-09-17 11:57 ` [Qemu-devel] [for-4.2 PATCH 2/6] replay: disable default snapshot for record/replay Pavel Dovgalyuk
2019-09-17 11:58 ` [Qemu-devel] [for-4.2 PATCH 3/6] replay: update docs for record/replay with block devices Pavel Dovgalyuk
2019-09-18 9:18 ` Kevin Wolf
2019-09-18 9:22 ` Pavel Dovgalyuk
2019-09-18 9:33 ` Kevin Wolf
2019-09-18 9:37 ` Pavel Dovgalyuk
2019-09-18 9:44 ` Kevin Wolf
2019-09-18 9:52 ` Pavel Dovgalyuk
2019-09-19 8:53 ` Kevin Wolf [this message]
2019-09-19 9:05 ` Pavel Dovgalyuk
2019-09-19 11:27 ` Kevin Wolf
2019-09-19 12:10 ` Pavel Dovgalyuk
2019-09-19 13:00 ` Kevin Wolf
2019-09-20 7:25 ` Pavel Dovgalyuk
2019-09-20 10:01 ` Kevin Wolf
2019-09-23 6:15 ` Pavel Dovgalyuk
2019-09-25 9:02 ` Pavel Dovgalyuk
2019-10-01 8:22 ` Pavel Dovgalyuk
2019-10-10 15:28 ` Kevin Wolf
2019-10-11 6:10 ` Pavel Dovgalyuk
2019-10-11 9:12 ` Kevin Wolf
2019-10-18 12:06 ` Pavel Dovgalyuk
2019-10-18 14:16 ` Kevin Wolf
2019-09-17 11:58 ` [Qemu-devel] [for-4.2 PATCH 4/6] replay: don't drain/flush bdrv queue while RR is working Pavel Dovgalyuk
2019-09-17 11:58 ` [Qemu-devel] [for-4.2 PATCH 5/6] replay: finish record/replay before closing the disks Pavel Dovgalyuk
2019-09-17 11:58 ` [Qemu-devel] [for-4.2 PATCH 6/6] replay: add BH oneshot event for block layer Pavel Dovgalyuk
2019-09-17 18:09 ` [Qemu-devel] [for-4.2 PATCH 0/6] Block-related record/replay fixes no-reply
2019-09-17 18:10 ` no-reply
2019-09-17 19:01 ` Alex Bennée
2019-09-18 8:26 ` Pavel Dovgalyuk
2019-09-18 10:42 ` Alex Bennée
2019-09-18 11:32 ` Pavel Dovgalyuk
2019-10-11 9:17 ` Kevin Wolf
-- strict thread matches above, loose matches on Subject: below --
2019-07-29 6:29 [Qemu-devel] " Pavel Dovgalyuk
2019-07-29 6:29 ` [Qemu-devel] [for-4.2 PATCH 3/6] replay: update docs for record/replay with block devices 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=20190919085302.GA10163@localhost.localdomain \
--to=kwolf@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=armbru@redhat.com \
--cc=artem.k.pisarenko@gmail.com \
--cc=boost.lists@gmail.com \
--cc=ciro.santilli@gmail.com \
--cc=crosthwaite.peter@gmail.com \
--cc=dgilbert@redhat.com \
--cc=dovgaluk@ispras.ru \
--cc=jasowang@redhat.com \
--cc=kraxel@redhat.com \
--cc=maria.klimushenkova@ispras.ru \
--cc=mreitz@redhat.com \
--cc=mst@redhat.com \
--cc=pavel.dovgaluk@gmail.com \
--cc=pavel.dovgaluk@ispras.ru \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=rth@twiddle.net \
--cc=thomas.dullien@googlemail.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).