[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v5 15/18] migration/multifd: Register nocomp ops dynamically
|
From: |
Fabiano Rosas |
|
Subject: |
[PATCH v5 15/18] migration/multifd: Register nocomp ops dynamically |
|
Date: |
Mon, 26 Aug 2024 16:53:19 -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.
Reviewed-by: Prasad Pandit <pjp@fedoraproject.org>
Reviewed-by: Peter Xu <peterx@redhat.com>
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 v5 06/18] migration/multifd: Make MultiFDPages_t:offset a flexible array member, (continued)
- [PATCH v5 06/18] migration/multifd: Make MultiFDPages_t:offset a flexible array member, Fabiano Rosas, 2024/08/26
- [PATCH v5 07/18] migration/multifd: Replace p->pages with an union pointer, Fabiano Rosas, 2024/08/26
- [PATCH v5 03/18] migration/multifd: Remove pages->allocated, Fabiano Rosas, 2024/08/26
- [PATCH v5 05/18] migration/multifd: Introduce MultiFDSendData, Fabiano Rosas, 2024/08/26
- [PATCH v5 08/18] migration/multifd: Move pages accounting into multifd_send_zero_page_detect(), Fabiano Rosas, 2024/08/26
- [PATCH v5 09/18] migration/multifd: Remove total pages tracing, Fabiano Rosas, 2024/08/26
- [PATCH v5 10/18] migration/multifd: Isolate ram pages packet data, Fabiano Rosas, 2024/08/26
- [PATCH v5 11/18] migration/multifd: Don't send ram data during SYNC, Fabiano Rosas, 2024/08/26
- [PATCH v5 12/18] migration/multifd: Replace multifd_send_state->pages with client data, Fabiano Rosas, 2024/08/26
- [PATCH v5 13/18] migration/multifd: Allow multifd sync without flush, Fabiano Rosas, 2024/08/26
- [PATCH v5 15/18] migration/multifd: Register nocomp ops dynamically,
Fabiano Rosas <=
- [PATCH v5 14/18] migration/multifd: Standardize on multifd ops names, Fabiano Rosas, 2024/08/26
- [PATCH v5 16/18] migration/multifd: Move nocomp code into multifd-nocomp.c, Fabiano Rosas, 2024/08/26
- [PATCH v5 18/18] migration/multifd: Stop changing the packet on recv side, Fabiano Rosas, 2024/08/26
- [PATCH v5 17/18] migration/multifd: Make MultiFDMethods const, Fabiano Rosas, 2024/08/26