aboutsummaryrefslogtreecommitdiff
path: root/migration/ram.c
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2022-05-16 12:03:09 -0700
committerRichard Henderson <richard.henderson@linaro.org>2022-05-16 12:03:09 -0700
commit54b592c427ca2575187082b35d5d6ae85db59f7b (patch)
tree79b75c37c3493562f52691fb5883e76a402239ae /migration/ram.c
parentb935385c351d624993c4accd712cef8510658ecd (diff)
parent5b1d9bab2da4fca3a3caee97c430e5709cb32b7b (diff)
Merge tag 'pull-migration-20220516a' of https://gitlab.com/dagrh/qemu into staging
Migration pull 2022-05-16 (This replaces the 28th April through 10th May sets) Compared to that last set it just has the Alpine uring check that Leo has added; although that's also now fixed upstream in Alpine. It contains: TLS test fixes from Dan Zerocopy migration feature from Leo Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCAAdFiEERfXHG0oMt/uXep+pBRYzHrxb/ecFAmKCY80ACgkQBRYzHrxb # /eeEEhAAoUogch7ifxFItr1EA0AU6Sgd3Dcn8wY9pm0NySVg7OcIpk1H++A3CgIh # bubJSwRmpIxGw+5q5w5OvBukFCGYMlAK7J8k1tZmaqdKS8wD0ZwhpPyqTWd14Q/v # xXSGOQfHMMvbBILiXPjSkfNw8yKJhZr+lW39uMz/kZRwZUmTcrdKAT3Q8PW+1DI9 # v3mNoFNXqtDlHcQ4nQ1TGk/RDO6oXDlTJwdnjoJT3Dopf8Jhl2etvZgVk2kOf4i5 # LmJbSVBr5FNOhJ6P4WL4OEQFOiXXquKdfuGTXIGGhkrW2WkPZulQwB6uO4Gv1wf2 # aj9bLDAFoPxFx2zYS6S/9L6rGeBMcTL9xHCfzyylM6YRjoscRdxXc67PClw71JUy # regsoSQej0FpmsGx0uuAsDjCELleVIjeYzuQo5OYOP1BCg/5unLIrMgkyQw7COJI # w+MIZq7IqvUTehU2yXpUGOqPkyDLBlib92dMRgqqG9r9UU7iL3BREbGW4ugW+GM2 # a9k8W9HjyDIIODsdXy1ugPHgjr/arHDAPgYosJMLvjTfdJDcIldAw6CbCcqhCDES # UOjMVN9VS+716nY2AqvtEHxf47YwqmeRb+tg4SQ0dHLH5Pvfe2bk1sbZiiQpcelt # Bd88yeBOpcmdzJVur2V4fEZXu5JB/qt/jeJeQa82hS3k93PWm/w= # =Axhk # -----END PGP SIGNATURE----- # gpg: Signature made Mon 16 May 2022 07:46:37 AM PDT # gpg: using RSA key 45F5C71B4A0CB7FB977A9FA90516331EBC5BFDE7 # gpg: Good signature from "Dr. David Alan Gilbert (RH2) <dgilbert@redhat.com>" [full] * tag 'pull-migration-20220516a' of https://gitlab.com/dagrh/qemu: multifd: Implement zero copy write in multifd migration (multifd-zero-copy) multifd: Send header packet without flags if zero-copy-send is enabled multifd: multifd_send_sync_main now returns negative on error migration: Add migrate_use_tls() helper migration: Add zero-copy-send parameter for QMP/HMP for Linux QIOChannelSocket: Implement io_writev zero copy flag & io_flush for CONFIG_LINUX QIOChannel: Add flags on io_writev and introduce io_flush callback meson.build: Fix docker-test-build@alpine when including linux/errqueue.h tests: ensure migration status isn't reported as failed tests: add multifd migration tests of TLS with x509 credentials tests: add multifd migration tests of TLS with PSK credentials tests: convert multifd migration tests to use common helper tests: convert XBZRLE migration test to use common helper tests: add migration tests of TLS with x509 credentials tests: add migration tests of TLS with PSK credentials tests: add more helper macros for creating TLS x509 certs tests: fix encoding of IP addresses in x509 certs Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'migration/ram.c')
-rw-r--r--migration/ram.c29
1 files changed, 22 insertions, 7 deletions
diff --git a/migration/ram.c b/migration/ram.c
index a2489a2699..5f5e37f64d 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -2909,6 +2909,7 @@ static int ram_save_setup(QEMUFile *f, void *opaque)
{
RAMState **rsp = opaque;
RAMBlock *block;
+ int ret;
if (compress_threads_save_setup()) {
return -1;
@@ -2943,7 +2944,11 @@ static int ram_save_setup(QEMUFile *f, void *opaque)
ram_control_before_iterate(f, RAM_CONTROL_SETUP);
ram_control_after_iterate(f, RAM_CONTROL_SETUP);
- multifd_send_sync_main(f);
+ ret = multifd_send_sync_main(f);
+ if (ret < 0) {
+ return ret;
+ }
+
qemu_put_be64(f, RAM_SAVE_FLAG_EOS);
qemu_fflush(f);
@@ -3052,7 +3057,11 @@ static int ram_save_iterate(QEMUFile *f, void *opaque)
out:
if (ret >= 0
&& migration_is_setup_or_active(migrate_get_current()->state)) {
- multifd_send_sync_main(rs->f);
+ ret = multifd_send_sync_main(rs->f);
+ if (ret < 0) {
+ return ret;
+ }
+
qemu_put_be64(f, RAM_SAVE_FLAG_EOS);
qemu_fflush(f);
ram_transferred_add(8);
@@ -3112,13 +3121,19 @@ static int ram_save_complete(QEMUFile *f, void *opaque)
ram_control_after_iterate(f, RAM_CONTROL_FINISH);
}
- if (ret >= 0) {
- multifd_send_sync_main(rs->f);
- qemu_put_be64(f, RAM_SAVE_FLAG_EOS);
- qemu_fflush(f);
+ if (ret < 0) {
+ return ret;
}
- return ret;
+ ret = multifd_send_sync_main(rs->f);
+ if (ret < 0) {
+ return ret;
+ }
+
+ qemu_put_be64(f, RAM_SAVE_FLAG_EOS);
+ qemu_fflush(f);
+
+ return 0;
}
static void ram_save_pending(QEMUFile *f, void *opaque, uint64_t max_size,