Steve Sistare <steven.sist...@oracle.com> writes:

> Fail the migration request if options are set that are incompatible
> with cpr.
>
> Signed-off-by: Steve Sistare <steven.sist...@oracle.com>
> ---
>  migration/migration.c | 17 +++++++++++++++++
>  qapi/migration.json   |  2 ++
>  2 files changed, 19 insertions(+)
>
> diff --git a/migration/migration.c b/migration/migration.c
> index 90a9094..7652fd4 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -1953,6 +1953,23 @@ static bool migrate_prepare(MigrationState *s, bool 
> blk, bool blk_inc,
>          return false;
>      }
>  
> +    if (migrate_mode_is_cpr(s)) {
> +        const char *conflict = NULL;
> +
> +        if (migrate_postcopy()) {
> +            conflict = "postcopy";
> +        } else if (migrate_background_snapshot()) {
> +            conflict = "background snapshot";
> +        } else if (migrate_colo()) {
> +            conflict = "COLO";
> +        }
> +
> +        if (conflict) {
> +            error_setg(errp, "Cannot use %s with CPR", conflict);
> +            return false;
> +        }
> +    }
> +
>      if (blk || blk_inc) {
>          if (migrate_colo()) {
>              error_setg(errp, "No disk migration is required in COLO mode");
> diff --git a/qapi/migration.json b/qapi/migration.json
> index 0990297..c6bfe2e 100644
> --- a/qapi/migration.json
> +++ b/qapi/migration.json
> @@ -657,6 +657,8 @@
>  #     shared backend must be be non-volatile across reboot, such as by 
> backing
>  #     it with a dax device.
>  #
> +#     cpr-reboot may not be used with postcopy, colo, or background-snapshot.
> +#

@cpr-reboot

COLO

Wrap the line:

   #     @cpr-reboot may not be used with postcopy, COLO, or
   #     background-snapshot.

This doesn't tell the reader what settings exactly do not work with
@cpr-reboot.

For instance "background-snapshot" is about enabling migration
capability @background-snapshot.  We could write something like "is
incompatible with enabling migration capability @background-snapshot".

Same for the other two.  Worthwhile?

>  #     (since 8.2)
>  ##
>  { 'enum': 'MigMode',


Reply via email to