On 16/09/2016 09:55, Pavel Dovgalyuk wrote:
>> Since you have to create
>> overlay.qcow2 outside QEMU anyway, overlay.qcow2 might as well be the
>> "image". That is, you could choose between:
>> -drive driver=blkreplay,if=none,image=overlay.qcow2,id=img-blkreplay \
>> -rr snapshot=replay_init,...
>> -drive driver=blkreplay,if=none,image=img-direct,id=img-blkreplay
>> The temporary snapshot would be created if there's no "-rr snapshot" option
>> on the command line.
>> Does this make sense?
> There are two different parts:
> - creating an overlay
> - creating the snapshot
> Overlay is needed to preserve the state of the original backing file.
> In the current version temporary overlay is always created at start of qemu.
Yes, this would still be the default for rr mode.
> I don't think that it is convenient forcing user to create overlay manually.
Note that all I'm only saying that _only for the case where the user
creates the overlay manually anyway_ there is no need to specify both
image and overlay. (I also don't like particularly the hard-coded
snapshot name replay_init, which can be overridden by -loadvm but not
So there are various possibilites:
- automatically created overlay is -icount rr=record|replay (then
snapshot name doesn't matter, it can be replay_init)
- manually created overlay is -icount
rr=record|replay,rrsnapshot=snapname (then snapshot name matters because
you can have different snapshots in the same file)
If rr is enabled but rrsnapshot is absent, configure_icount can just set
"snapshot = 1" to force creation of the temporary overlay. This
requires no change to the blkreplay driver
- automatically created overlay is -icount rr=record|replay -snapshot
- manually created overlay is -icount rr=record|replay and an rrsnapshot
suboption can be added anyway if considered useful.
This requires no change to the blkreplay driver either. It's a little
more verbose in the common case, but perhaps less surprising if you're
already used to -snapshot.
> Common debugging scenario includes multiple recording passes until the bug
> itself. Every new execution recorded should be accompanied by creating an
> to assure that the execution is started from the same disk state.
> Specifying initial snapshot name makes sense if we want to suppress -loadvm
My rationale was to have similar command lines between record and replay
modes (just changing rr=record to rr=replay).
> Then replay may be started from any state without using -loadvm.
> Pavel Dovgalyuk