I apologize for the lateness of my review.
Jonah Palmer <[email protected]> writes:
> Adds a new migration capability 'virtio-iterative' that will allow
> virtio devices, where supported, to iteratively migrate configuration
> changes that occur during the migration process.
Why is that desirable?
> This capability is added to the validated capabilities list to ensure
> both the source and destination support it before enabling.
What happens when only one side enables it?
> The capability defaults to off to maintain backward compatibility.
>
> To enable the capability via HMP:
> (qemu) migrate_set_capability virtio-iterative on
>
> To enable the capability via QMP:
> {"execute": "migrate-set-capabilities", "arguments": {
> "capabilities": [
> { "capability": "virtio-iterative", "state": true }
> ]
> }
> }
>
> Signed-off-by: Jonah Palmer <[email protected]>
> ---
> migration/savevm.c | 1 +
> qapi/migration.json | 7 ++++++-
> 2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/migration/savevm.c b/migration/savevm.c
> index bb04a4520d..40a2189866 100644
> --- a/migration/savevm.c
> +++ b/migration/savevm.c
> @@ -279,6 +279,7 @@ static bool should_validate_capability(int capability)
> switch (capability) {
> case MIGRATION_CAPABILITY_X_IGNORE_SHARED:
> case MIGRATION_CAPABILITY_MAPPED_RAM:
> + case MIGRATION_CAPABILITY_VIRTIO_ITERATIVE:
> return true;
> default:
> return false;
> diff --git a/qapi/migration.json b/qapi/migration.json
> index 4963f6ca12..8f042c3ba5 100644
> --- a/qapi/migration.json
> +++ b/qapi/migration.json
> @@ -479,6 +479,11 @@
> # each RAM page. Requires a migration URI that supports seeking,
> # such as a file. (since 9.0)
> #
> +# @virtio-iterative: Enable iterative migration for virtio devices, if
> +# the device supports it. When enabled, and where supported, virtio
> +# devices will track and migrate configuration changes that may
> +# occur during the migration process. (Since 10.1)
When and why should the user enable this?
What exactly do you mean by "where supported"?
docs/devel/qapi-code-gen.rst:
For legibility, wrap text paragraphs so every line is at most 70
characters long.
Separate sentences with two spaces.
> +#
> # Features:
> #
> # @unstable: Members @x-colo and @x-ignore-shared are experimental.
> @@ -498,7 +503,7 @@
> { 'name': 'x-ignore-shared', 'features': [ 'unstable' ] },
> 'validate-uuid', 'background-snapshot',
> 'zero-copy-send', 'postcopy-preempt', 'switchover-ack',
> - 'dirty-limit', 'mapped-ram'] }
> + 'dirty-limit', 'mapped-ram', 'virtio-iterative'] }
>
> ##
> # @MigrationCapabilityStatus: