qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v8 08/20] migration: introduce icount field for


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH v8 08/20] migration: introduce icount field for snapshots
Date: Wed, 19 Dec 2018 13:48:07 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)

Pavel Dovgalyuk <address@hidden> writes:

> Saving icount as a parameters of the snapshot allows navigation between
> them in the execution replay scenario.
> This information can be used for finding a specific snapshot for rewinding
> the recorded execution to the specific moment of the time.
> E.g., 'reverse step' action needs to load the nearest snapshot which is
> prior to the current moment of time .
>
> Signed-off-by: Pavel Dovgalyuk <address@hidden>
[...]
> diff --git a/migration/savevm.c b/migration/savevm.c
> index 9e45fb4..a031e5b 100644
> --- a/migration/savevm.c
> +++ b/migration/savevm.c
> @@ -2509,6 +2509,11 @@ int save_snapshot(const char *name, Error **errp)
>      sn->date_sec = tv.tv_sec;
>      sn->date_nsec = tv.tv_usec * 1000;
>      sn->vm_clock_nsec = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
> +    if (replay_mode != REPLAY_MODE_NONE) {
> +        sn->icount = replay_get_current_step();
> +    } else {
> +        sn->icount = -1ULL;
> +    }
>  
>      if (name) {
>          ret = bdrv_snapshot_find(bs, old_sn, name);
> diff --git a/qapi/block-core.json b/qapi/block-core.json
> index 762000f..7bb1727 100644
> --- a/qapi/block-core.json
> +++ b/qapi/block-core.json
> @@ -26,13 +26,18 @@
>  #
>  # @vm-clock-nsec: fractional part in nano seconds to be used with 
> vm-clock-sec
>  #
> +# @icount: Current instruction count. Appears when execution record/replay
> +#          is enabled. Used for "time-traveling" to match the moment
> +#          in the recorded execution with the snapshots (since 4.0)
> +#
>  # Since: 1.3
>  #
>  ##
>  { 'struct': 'SnapshotInfo',
>    'data': { 'id': 'str', 'name': 'str', 'vm-state-size': 'int',
>              'date-sec': 'int', 'date-nsec': 'int',
> -            'vm-clock-sec': 'int', 'vm-clock-nsec': 'int' } }
> +            'vm-clock-sec': 'int', 'vm-clock-nsec': 'int',
> +            '*icount': 'int' } }
>  
>  ##
>  # @ImageInfoSpecificQCow2EncryptionBase:

As far as I can tell, @icount is the same as ReplayInfo's @step.  But I
had to look at the code to tell.  Please name the two consistently.
Also consider having the documentation refer to ReplayInfo.

> diff --git a/qapi/block.json b/qapi/block.json
> index 11f01f2..a6396a9 100644
> --- a/qapi/block.json
> +++ b/qapi/block.json
> @@ -176,7 +176,8 @@
>  #                    "date-sec": 1000012,
>  #                    "date-nsec": 10,
>  #                    "vm-clock-sec": 100,
> -#                    "vm-clock-nsec": 20
> +#                    "vm-clock-nsec": 20,
> +#                    "icount": 220414
>  #      }
>  #    }
>  #



reply via email to

[Prev in Thread] Current Thread [Next in Thread]