migration: options incompatible with cpr

Fail the migration request if options are set that are incompatible
with cpr.

Signed-off-by: Steve Sistare <steven.sistare@oracle.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Link: https://lore.kernel.org/r/1708622920-68779-15-git-send-email-steven.sistare@oracle.com
Signed-off-by: Peter Xu <peterx@redhat.com>
This commit is contained in:
Steve Sistare 2024-02-22 09:28:40 -08:00 committed by Peter Xu
parent ce5db1cb49
commit cbdafc1b34
2 changed files with 19 additions and 0 deletions

View File

@ -1953,6 +1953,23 @@ static bool migrate_prepare(MigrationState *s, bool blk, bool blk_inc,
return false; 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 (blk || blk_inc) {
if (migrate_colo()) { if (migrate_colo()) {
error_setg(errp, "No disk migration is required in COLO mode"); error_setg(errp, "No disk migration is required in COLO mode");

View File

@ -657,6 +657,8 @@
# shared backend must be be non-volatile across reboot, such as by backing # shared backend must be be non-volatile across reboot, such as by backing
# it with a dax device. # it with a dax device.
# #
# cpr-reboot may not be used with postcopy, colo, or background-snapshot.
#
# (since 8.2) # (since 8.2)
## ##
{ 'enum': 'MigMode', { 'enum': 'MigMode',