aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Quintela <quintela@redhat.com>2023-05-04 13:44:43 +0200
committerJuan Quintela <quintela@redhat.com>2023-05-05 01:04:33 +0200
commitcd01a602312ac02aed9aba4ef73b8b890274094c (patch)
treeec1434be27c54bb3f783364edbe9120be27ad970
parent8c90815797af2ae6444a2722b19f7bdaf73b5458 (diff)
downloadqemu-cd01a602312ac02aed9aba4ef73b8b890274094c.zip
qemu-cd01a602312ac02aed9aba4ef73b8b890274094c.tar.gz
qemu-cd01a602312ac02aed9aba4ef73b8b890274094c.tar.bz2
migration/rdma: Check for postcopy sooner
It makes no sense first try to see if there is an rdma error and then do nothing on postcopy stage. Change it so we check we are in postcopy before doing anything. Signed-off-by: Juan Quintela <quintela@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Message-Id: <20230504114443.23891-6-quintela@redhat.com>
-rw-r--r--migration/rdma.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/migration/rdma.c b/migration/rdma.c
index 17c4b92..2cd8f1c 100644
--- a/migration/rdma.c
+++ b/migration/rdma.c
@@ -3234,6 +3234,10 @@ static size_t qemu_rdma_save_page(QEMUFile *f,
RDMAContext *rdma;
int ret;
+ if (migration_in_postcopy()) {
+ return RAM_SAVE_CONTROL_NOT_SUPP;
+ }
+
RCU_READ_LOCK_GUARD();
rdma = qatomic_rcu_read(&rioc->rdmaout);
@@ -3243,10 +3247,6 @@ static size_t qemu_rdma_save_page(QEMUFile *f,
CHECK_ERROR_STATE();
- if (migration_in_postcopy()) {
- return RAM_SAVE_CONTROL_NOT_SUPP;
- }
-
qemu_fflush(f);
/*
@@ -3866,6 +3866,10 @@ static int qemu_rdma_registration_start(QEMUFile *f,
QIOChannelRDMA *rioc = QIO_CHANNEL_RDMA(qemu_file_get_ioc(f));
RDMAContext *rdma;
+ if (migration_in_postcopy()) {
+ return 0;
+ }
+
RCU_READ_LOCK_GUARD();
rdma = qatomic_rcu_read(&rioc->rdmaout);
if (!rdma) {
@@ -3874,10 +3878,6 @@ static int qemu_rdma_registration_start(QEMUFile *f,
CHECK_ERROR_STATE();
- if (migration_in_postcopy()) {
- return 0;
- }
-
trace_qemu_rdma_registration_start(flags);
qemu_put_be64(f, RAM_SAVE_FLAG_HOOK);
qemu_fflush(f);
@@ -3897,6 +3897,10 @@ static int qemu_rdma_registration_stop(QEMUFile *f,
RDMAControlHeader head = { .len = 0, .repeat = 1 };
int ret = 0;
+ if (migration_in_postcopy()) {
+ return 0;
+ }
+
RCU_READ_LOCK_GUARD();
rdma = qatomic_rcu_read(&rioc->rdmaout);
if (!rdma) {
@@ -3905,10 +3909,6 @@ static int qemu_rdma_registration_stop(QEMUFile *f,
CHECK_ERROR_STATE();
- if (migration_in_postcopy()) {
- return 0;
- }
-
qemu_fflush(f);
ret = qemu_rdma_drain_cq(f, rdma);