[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH v2 3/9] migration/multifd: Introduce MultiFDSendData
From: |
Fabiano Rosas |
Subject: |
[RFC PATCH v2 3/9] migration/multifd: Introduce MultiFDSendData |
Date: |
Mon, 22 Jul 2024 14:59:08 -0300 |
Add a new data structure to replace p->pages in the multifd
channel. This new structure will hide the multifd payload type behind
an union, so we don't need to add a new field to the channel each time
we want to handle a different data type.
This also allow us to keep multifd_send_pages() as is, without needing
to complicate the pointer switching.
Signed-off-by: Fabiano Rosas <farosas@suse.de>
---
migration/multifd.h | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/migration/multifd.h b/migration/multifd.h
index 0ecd6f47d7..c7b1ebe099 100644
--- a/migration/multifd.h
+++ b/migration/multifd.h
@@ -16,6 +16,7 @@
#include "ram.h"
typedef struct MultiFDRecvData MultiFDRecvData;
+typedef struct MultiFDSendData MultiFDSendData;
bool multifd_send_setup(void);
void multifd_send_shutdown(void);
@@ -89,6 +90,29 @@ struct MultiFDRecvData {
off_t file_offset;
};
+typedef enum {
+ MULTIFD_PAYLOAD_NONE,
+ MULTIFD_PAYLOAD_RAM,
+} MultiFDPayloadType;
+
+struct MultiFDSendData {
+ MultiFDPayloadType type;
+ union {
+ MultiFDPages_t ram;
+ } u;
+};
+
+static inline bool multifd_payload_empty(MultiFDSendData *data)
+{
+ return data->type == MULTIFD_PAYLOAD_NONE;
+}
+
+static inline void multifd_set_payload_type(MultiFDSendData *data,
+ MultiFDPayloadType type)
+{
+ data->type = type;
+}
+
typedef struct {
/* Fields are only written at creating/deletion time */
/* No lock required for them, they are read only */
--
2.35.3