diff options
Diffstat (limited to 'migration/migration.c')
-rw-r--r-- | migration/migration.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/migration/migration.c b/migration/migration.c index 739bb683f3..f485eea5fb 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -1337,6 +1337,24 @@ static bool migrate_caps_check(bool *cap_list, error_setg(errp, "Postcopy preempt requires postcopy-ram"); return false; } + + /* + * Preempt mode requires urgent pages to be sent in separate + * channel, OTOH compression logic will disorder all pages into + * different compression channels, which is not compatible with the + * preempt assumptions on channel assignments. + */ + if (cap_list[MIGRATION_CAPABILITY_COMPRESS]) { + error_setg(errp, "Postcopy preempt not compatible with compress"); + return false; + } + } + + if (cap_list[MIGRATION_CAPABILITY_MULTIFD]) { + if (cap_list[MIGRATION_CAPABILITY_COMPRESS]) { + error_setg(errp, "Multifd is not compatible with compress"); + return false; + } } return true; |