mirror of
https://github.com/Motorhead1991/qemu.git
synced 2026-01-06 14:37:42 -07:00
migration/rdma: Simplify the function that saves a page
When we sent a page through QEMUFile hooks (RDMA) there are three posiblities: - We are not using RDMA. return RAM_SAVE_CONTROL_DELAYED and control_save_page() returns false to let anything else to proceed. - There is one error but we are using RDMA. Then we return a negative value, control_save_page() needs to return true. - Everything goes well and RDMA start the sent of the page asynchronously. It returns RAM_SAVE_CONTROL_DELAYED and we need to return 1 for ram_save_page_legacy. Clear? I know, I know, the interface is as bad as it gets. I think that now it is a bit clearer, but this needs to be done some other way. Reviewed-by: Leonardo Bras <leobras@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com> Message-Id: <20230515195709.63843-16-quintela@redhat.com>
This commit is contained in:
parent
9f51fe9239
commit
9c53d369e5
4 changed files with 18 additions and 37 deletions
|
|
@ -49,11 +49,10 @@ typedef int (QEMURamHookFunc)(QEMUFile *f, uint64_t flags, void *data);
|
|||
* This function allows override of where the RAM page
|
||||
* is saved (such as RDMA, for example.)
|
||||
*/
|
||||
typedef size_t (QEMURamSaveFunc)(QEMUFile *f,
|
||||
ram_addr_t block_offset,
|
||||
ram_addr_t offset,
|
||||
size_t size,
|
||||
uint64_t *bytes_sent);
|
||||
typedef int (QEMURamSaveFunc)(QEMUFile *f,
|
||||
ram_addr_t block_offset,
|
||||
ram_addr_t offset,
|
||||
size_t size);
|
||||
|
||||
typedef struct QEMUFileHooks {
|
||||
QEMURamHookFunc *before_ram_iterate;
|
||||
|
|
@ -142,9 +141,8 @@ void ram_control_load_hook(QEMUFile *f, uint64_t flags, void *data);
|
|||
#define RAM_SAVE_CONTROL_NOT_SUPP -1000
|
||||
#define RAM_SAVE_CONTROL_DELAYED -2000
|
||||
|
||||
size_t ram_control_save_page(QEMUFile *f, ram_addr_t block_offset,
|
||||
ram_addr_t offset, size_t size,
|
||||
uint64_t *bytes_sent);
|
||||
int ram_control_save_page(QEMUFile *f, ram_addr_t block_offset,
|
||||
ram_addr_t offset, size_t size);
|
||||
QIOChannel *qemu_file_get_ioc(QEMUFile *file);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue