[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 05/16] migration/multifd: Introduce MultiFDSendData
|
From: |
Fabiano Rosas |
|
Subject: |
[PATCH v4 05/16] migration/multifd: Introduce MultiFDSendData |
|
Date: |
Fri, 23 Aug 2024 14:39:00 -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.
Reviewed-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Fabiano Rosas <farosas@suse.de>
---
migration/multifd.h | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/migration/multifd.h b/migration/multifd.h
index 660a9882c2..7bb4a2cbc4 100644
--- a/migration/multifd.h
+++ b/migration/multifd.h
@@ -17,6 +17,7 @@
#include "ram.h"
typedef struct MultiFDRecvData MultiFDRecvData;
+typedef struct MultiFDSendData MultiFDSendData;
bool multifd_send_setup(void);
void multifd_send_shutdown(void);
@@ -88,6 +89,31 @@ struct MultiFDRecvData {
off_t file_offset;
};
+typedef enum {
+ MULTIFD_PAYLOAD_NONE,
+ MULTIFD_PAYLOAD_RAM,
+} MultiFDPayloadType;
+
+typedef union MultiFDPayload {
+ MultiFDPages_t ram;
+} MultiFDPayload;
+
+struct MultiFDSendData {
+ MultiFDPayloadType type;
+ MultiFDPayload 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
- [PATCH v4 00/16] migration/multifd: Remove multifd_send_state->pages, Fabiano Rosas, 2024/08/23
- [PATCH v4 01/16] migration/multifd: Reduce access to p->pages, Fabiano Rosas, 2024/08/23
- [PATCH v4 03/16] migration/multifd: Remove pages->allocated, Fabiano Rosas, 2024/08/23
- [PATCH v4 02/16] migration/multifd: Inline page_size and page_count, Fabiano Rosas, 2024/08/23
- [PATCH v4 06/16] migration/multifd: Make MultiFDPages_t:offset a flexible array member, Fabiano Rosas, 2024/08/23
- [PATCH v4 05/16] migration/multifd: Introduce MultiFDSendData,
Fabiano Rosas <=
- [PATCH v4 04/16] migration/multifd: Pass in MultiFDPages_t to file_write_ramblock_iov, Fabiano Rosas, 2024/08/23
- [PATCH v4 07/16] migration/multifd: Replace p->pages with an union pointer, Fabiano Rosas, 2024/08/23
- [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