[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 29/30] migration: Avoid false-positive on non-supported scenarios
From: |
Dr. David Alan Gilbert (git) |
Subject: |
[PULL 29/30] migration: Avoid false-positive on non-supported scenarios for zero-copy-send |
Date: |
Wed, 20 Jul 2022 12:19:25 +0100 |
From: Leonardo Bras <leobras@redhat.com>
Migration with zero-copy-send currently has it's limitations, as it can't
be used with TLS nor any kind of compression. In such scenarios, it should
output errors during parameter / capability setting.
But currently there are some ways of setting this not-supported scenarios
without printing the error message:
!) For 'compression' capability, it works by enabling it together with
zero-copy-send. This happens because the validity test for zero-copy uses
the helper unction migrate_use_compression(), which check for compression
presence in s->enabled_capabilities[MIGRATION_CAPABILITY_COMPRESS].
The point here is: the validity test happens before the capability gets
enabled. If all of them get enabled together, this test will not return
error.
In order to fix that, replace migrate_use_compression() by directly testing
the cap_list parameter migrate_caps_check().
2) For features enabled by parameters such as TLS & 'multifd_compression',
there was also a possibility of setting non-supported scenarios: setting
zero-copy-send first, then setting the unsupported parameter.
In order to fix that, also add a check for parameters conflicting with
zero-copy-send on migrate_params_check().
3) XBZRLE is also a compression capability, so it makes sense to also add
it to the list of capabilities which are not supported with zero-copy-send.
Fixes: 1abaec9a1b2c ("migration: Change zero_copy_send from migration parameter
to migration capability")
Signed-off-by: Leonardo Bras <leobras@redhat.com>
Message-Id: <20220719122345.253713-1-leobras@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
migration/migration.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/migration/migration.c b/migration/migration.c
index 15ae48b209..e03f698a3c 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -1306,7 +1306,9 @@ static bool migrate_caps_check(bool *cap_list,
#ifdef CONFIG_LINUX
if (cap_list[MIGRATION_CAPABILITY_ZERO_COPY_SEND] &&
(!cap_list[MIGRATION_CAPABILITY_MULTIFD] ||
- migrate_use_compression() ||
+ cap_list[MIGRATION_CAPABILITY_COMPRESS] ||
+ cap_list[MIGRATION_CAPABILITY_XBZRLE] ||
+ migrate_multifd_compression() ||
migrate_use_tls())) {
error_setg(errp,
"Zero copy only available for non-compressed non-TLS
multifd migration");
@@ -1550,6 +1552,17 @@ static bool migrate_params_check(MigrationParameters
*params, Error **errp)
error_prepend(errp, "Invalid mapping given for block-bitmap-mapping:
");
return false;
}
+
+#ifdef CONFIG_LINUX
+ if (migrate_use_zero_copy_send() &&
+ ((params->has_multifd_compression && params->multifd_compression) ||
+ (params->has_tls_creds && params->tls_creds && *params->tls_creds))) {
+ error_setg(errp,
+ "Zero copy only available for non-compressed non-TLS
multifd migration");
+ return false;
+ }
+#endif
+
return true;
}
--
2.36.1
- [PULL 20/30] tests: Move MigrateCommon upper, (continued)
- [PULL 20/30] tests: Move MigrateCommon upper, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 24/30] migration: remove unreachable code after reading data, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 17/30] migration: Export tls-[creds|hostname|authz] params to cmdline too, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 26/30] Add dirty-sync-missed-zero-copy migration stat, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 21/30] tests: Add postcopy tls migration test, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 23/30] tests: Add postcopy preempt tests, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 30/30] Revert "gitlab: disable accelerated zlib for s390x", Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 27/30] migration/multifd: Report to user when zerocopy not working, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 28/30] multifd: Document the locking of MultiFD{Send/Recv}Params, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 25/30] QIOChannelSocket: Fix zero-copy flush returning code 1 when nothing sent, Dr. David Alan Gilbert (git), 2022/07/20
- [PULL 29/30] migration: Avoid false-positive on non-supported scenarios for zero-copy-send,
Dr. David Alan Gilbert (git) <=
- Re: [PULL 00/30] migration queue, Peter Maydell, 2022/07/21