qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Juan Quintela <quintela@redhat.com>
To: qemu-devel@nongnu.org
Cc: Laurent Vivier <lvivier@redhat.com>,
	Thomas Huth <thuth@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	libvir-list@redhat.com, Paolo Bonzini <pbonzini@redhat.com>,
	Peter Xu <peterx@redhat.com>, Eric Blake <eblake@redhat.com>,
	Juan Quintela <quintela@redhat.com>,
	Leonardo Bras <leobras@redhat.com>,
	Wei Wang <wei.w.wang@intel.com>
Subject: [PATCH 19/26] migration: enforce multifd and postcopy preempt to be set before incoming
Date: Mon, 24 Jul 2023 15:06:32 +0200	[thread overview]
Message-ID: <20230724130639.93135-20-quintela@redhat.com> (raw)
In-Reply-To: <20230724130639.93135-1-quintela@redhat.com>

From: Wei Wang <wei.w.wang@intel.com>

qemu_start_incoming_migration needs to check the number of multifd
channels or postcopy ram channels to configure the backlog parameter (i.e.
the maximum length to which the queue of pending connections for sockfd
may grow) of listen(). So enforce the usage of postcopy-preempt and
multifd as below:
- need to use "-incoming defer" on the destination; and
- set_capability and set_parameter need to be done before migrate_incoming

Otherwise, disable the use of the features and report error messages to
remind users to adjust the commands.

Signed-off-by: Wei Wang <wei.w.wang@intel.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Message-ID: <20230606101910.20456-2-wei.w.wang@intel.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Acked-by: Juan Quintela <quintela@redhat.com>
---
 migration/options.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/migration/options.c b/migration/options.c
index 7d83f190d6..1d1e1321b0 100644
--- a/migration/options.c
+++ b/migration/options.c
@@ -441,6 +441,11 @@ INITIALIZE_MIGRATE_CAPS_SET(check_caps_background_snapshot,
     MIGRATION_CAPABILITY_VALIDATE_UUID,
     MIGRATION_CAPABILITY_ZERO_COPY_SEND);
 
+static bool migrate_incoming_started(void)
+{
+    return !!migration_incoming_get_current()->transport_data;
+}
+
 /**
  * @migration_caps_check - check capability compatibility
  *
@@ -564,6 +569,12 @@ bool migrate_caps_check(bool *old_caps, bool *new_caps, Error **errp)
             error_setg(errp, "Postcopy preempt not compatible with compress");
             return false;
         }
+
+        if (migrate_incoming_started()) {
+            error_setg(errp,
+                       "Postcopy preempt must be set before incoming starts");
+            return false;
+        }
     }
 
     if (new_caps[MIGRATION_CAPABILITY_MULTIFD]) {
@@ -571,6 +582,10 @@ bool migrate_caps_check(bool *old_caps, bool *new_caps, Error **errp)
             error_setg(errp, "Multifd is not compatible with compress");
             return false;
         }
+        if (migrate_incoming_started()) {
+            error_setg(errp, "Multifd must be set before incoming starts");
+            return false;
+        }
     }
 
     if (new_caps[MIGRATION_CAPABILITY_SWITCHOVER_ACK]) {
-- 
2.40.1



  parent reply	other threads:[~2023-07-24 13:13 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-24 13:06 [PATCH 00/26] Migration PULL 2023-07-24 Juan Quintela
2023-07-24 13:06 ` [PATCH 01/26] migration/multifd: Rename threadinfo.c functions Juan Quintela
2023-07-24 13:06 ` [PATCH 02/26] migration/multifd: Protect accesses to migration_threads Juan Quintela
2023-07-24 13:29   ` Fabiano Rosas
2023-07-24 13:06 ` [PATCH 03/26] softmmu/dirtylimit: Add parameter check for hmp "set_vcpu_dirty_limit" Juan Quintela
2023-07-24 13:06 ` [PATCH 04/26] qapi/migration: Introduce x-vcpu-dirty-limit-period parameter Juan Quintela
2023-07-24 13:06 ` [PATCH 05/26] qapi/migration: Introduce vcpu-dirty-limit parameters Juan Quintela
2023-07-24 13:06 ` [PATCH 06/26] migration: Introduce dirty-limit capability Juan Quintela
2023-07-24 13:06 ` [PATCH 07/26] migration: Refactor auto-converge capability logic Juan Quintela
2023-07-24 13:06 ` [PATCH 08/26] migration: Put the detection logic before auto-converge checking Juan Quintela
2023-07-24 13:06 ` [PATCH 09/26] migration: Implement dirty-limit convergence algo Juan Quintela
2023-07-24 13:06 ` [PATCH 10/26] migration: Extend query-migrate to provide dirty page limit info Juan Quintela
2023-07-24 13:06 ` [PATCH 11/26] migration-test: Be consistent for ppc Juan Quintela
2023-07-24 13:06 ` [PATCH 12/26] migration-test: Make machine_opts regular with other options Juan Quintela
2023-07-24 13:06 ` [PATCH 13/26] migration-test: Create arch_opts Juan Quintela
2023-07-24 13:06 ` [PATCH 14/26] migration-test: machine_opts is really arch specific Juan Quintela
2023-07-24 13:06 ` [PATCH 15/26] migration.json: Don't use space before colon Juan Quintela
2023-07-24 13:06 ` [PATCH 16/26] migration: skipped field is really obsolete Juan Quintela
2023-07-24 13:06 ` [PATCH 17/26] docs/migration: Update postcopy bits Juan Quintela
2023-07-24 13:06 ` [PATCH 18/26] migration: Update error description whenever migration fails Juan Quintela
2023-07-24 13:06 ` Juan Quintela [this message]
2023-07-24 13:06 ` [PATCH 20/26] qtest/migration-tests.c: use "-incoming defer" for postcopy tests Juan Quintela
2023-07-24 13:06 ` [PATCH 21/26] qemu-file: Rename qemu_file_transferred_ fast -> noflush Juan Quintela
2023-07-24 13:06 ` [PATCH 22/26] migration: Change qemu_file_transferred to noflush Juan Quintela
2023-07-24 13:06 ` [PATCH 23/26] qemu_file: Make qemu_file_is_writable() static Juan Quintela
2023-07-24 13:06 ` [PATCH 24/26] qemu-file: Simplify qemu_file_shutdown() Juan Quintela
2023-07-24 13:06 ` [PATCH 25/26] qemu-file: Make qemu_file_get_error_obj() static Juan Quintela
2023-07-24 13:06 ` [PATCH 26/26] migration/rdma: Split qemu_fopen_rdma() into input/output functions Juan Quintela
2023-07-24 13:28 ` [PATCH 00/26] Migration PULL 2023-07-24 Thomas Huth
2023-07-31  6:56   ` Juan Quintela

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230724130639.93135-20-quintela@redhat.com \
    --to=quintela@redhat.com \
    --cc=armbru@redhat.com \
    --cc=eblake@redhat.com \
    --cc=leobras@redhat.com \
    --cc=libvir-list@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peterx@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@redhat.com \
    --cc=wei.w.wang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).