[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 15/16] migration/multifd: Register nocomp ops dynamically
|
From: |
Fabiano Rosas |
|
Subject: |
[PATCH v4 15/16] migration/multifd: Register nocomp ops dynamically |
|
Date: |
Fri, 23 Aug 2024 14:39:10 -0300 |
Prior to moving the ram code into multifd-nocomp.c, change the code to
register the nocomp ops dynamically so we don't need to have the ops
structure defined in multifd.c.
While here, move the ops struct initialization to the end of the file
to make the next diff cleaner.
Signed-off-by: Fabiano Rosas <farosas@suse.de>
---
migration/multifd.c | 32 +++++++++++++++++++-------------
1 file changed, 19 insertions(+), 13 deletions(-)
diff --git a/migration/multifd.c b/migration/multifd.c
index 9f40bb2f16..e100836cbe 100644
--- a/migration/multifd.c
+++ b/migration/multifd.c
@@ -287,22 +287,12 @@ static int multifd_nocomp_recv(MultiFDRecvParams *p,
Error **errp)
return qio_channel_readv_all(p->c, p->iov, p->normal_num, errp);
}
-static MultiFDMethods multifd_nocomp_ops = {
- .send_setup = multifd_nocomp_send_setup,
- .send_cleanup = multifd_nocomp_send_cleanup,
- .send_prepare = multifd_nocomp_send_prepare,
- .recv_setup = multifd_nocomp_recv_setup,
- .recv_cleanup = multifd_nocomp_recv_cleanup,
- .recv = multifd_nocomp_recv
-};
-
-static MultiFDMethods *multifd_ops[MULTIFD_COMPRESSION__MAX] = {
- [MULTIFD_COMPRESSION_NONE] = &multifd_nocomp_ops,
-};
+static MultiFDMethods *multifd_ops[MULTIFD_COMPRESSION__MAX] = {};
void multifd_register_ops(int method, MultiFDMethods *ops)
{
- assert(0 < method && method < MULTIFD_COMPRESSION__MAX);
+ assert(0 <= method && method < MULTIFD_COMPRESSION__MAX);
+ assert(!multifd_ops[method]);
multifd_ops[method] = ops;
}
@@ -1701,3 +1691,19 @@ bool multifd_send_prepare_common(MultiFDSendParams *p)
return true;
}
+
+static MultiFDMethods multifd_nocomp_ops = {
+ .send_setup = multifd_nocomp_send_setup,
+ .send_cleanup = multifd_nocomp_send_cleanup,
+ .send_prepare = multifd_nocomp_send_prepare,
+ .recv_setup = multifd_nocomp_recv_setup,
+ .recv_cleanup = multifd_nocomp_recv_cleanup,
+ .recv = multifd_nocomp_recv
+};
+
+static void multifd_nocomp_register(void)
+{
+ multifd_register_ops(MULTIFD_COMPRESSION_NONE, &multifd_nocomp_ops);
+}
+
+migration_init(multifd_nocomp_register);
--
2.35.3
- [PATCH v4 08/16] migration/multifd: Move pages accounting into multifd_send_zero_page_detect(), (continued)
- [PATCH v4 08/16] migration/multifd: Move pages accounting into multifd_send_zero_page_detect(), Fabiano Rosas, 2024/08/23
- [PATCH v4 09/16] migration/multifd: Remove total pages tracing, Fabiano Rosas, 2024/08/23
- [PATCH v4 10/16] migration/multifd: Isolate ram pages packet data, Fabiano Rosas, 2024/08/23
- [PATCH v4 11/16] migration/multifd: Don't send ram data during SYNC, Fabiano Rosas, 2024/08/23
- [PATCH v4 12/16] migration/multifd: Replace multifd_send_state->pages with client data, Fabiano Rosas, 2024/08/23
- [PATCH v4 13/16] migration/multifd: Allow multifd sync without flush, Fabiano Rosas, 2024/08/23
- [PATCH v4 15/16] migration/multifd: Register nocomp ops dynamically,
Fabiano Rosas <=
- [PATCH v4 14/16] migration/multifd: Standardize on multifd ops names, Fabiano Rosas, 2024/08/23
- [PATCH v4 16/16] migration/multifd: Move nocomp code into multifd-nocomp.c, Fabiano Rosas, 2024/08/23