mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 00:33:55 -06:00
migration: Unfold control_save_page()
control_save_page() is for RDMA only, unfold it to make the code more clear. In addition: - Similar to other branches style in ram_save_target_page(), involve RDMA only if the condition 'migrate_rdma()' is true. - Further simplify the code by removing the RAM_SAVE_CONTROL_NOT_SUPP. Reviewed-by: Peter Xu <peterx@redhat.com> Signed-off-by: Li Zhijian <lizhijian@fujitsu.com> Message-ID: <20250305062825.772629-6-lizhijian@fujitsu.com> Signed-off-by: Fabiano Rosas <farosas@suse.de>
This commit is contained in:
parent
4ecd6beaf9
commit
5e7ca4a7d7
3 changed files with 10 additions and 34 deletions
|
@ -1143,32 +1143,6 @@ static int save_zero_page(RAMState *rs, PageSearchStatus *pss,
|
|||
return len;
|
||||
}
|
||||
|
||||
/*
|
||||
* @pages: the number of pages written by the control path,
|
||||
* < 0 - error
|
||||
* > 0 - number of pages written
|
||||
*
|
||||
* Return true if the pages has been saved, otherwise false is returned.
|
||||
*/
|
||||
static bool control_save_page(PageSearchStatus *pss,
|
||||
ram_addr_t offset, int *pages)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = rdma_control_save_page(pss->pss_channel, pss->block->offset, offset,
|
||||
TARGET_PAGE_SIZE);
|
||||
if (ret == RAM_SAVE_CONTROL_NOT_SUPP) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ret == RAM_SAVE_CONTROL_DELAYED) {
|
||||
*pages = 1;
|
||||
return true;
|
||||
}
|
||||
*pages = ret;
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* directly send the page to the stream
|
||||
*
|
||||
|
@ -1965,7 +1939,13 @@ static int ram_save_target_page(RAMState *rs, PageSearchStatus *pss)
|
|||
int res;
|
||||
|
||||
/* Hand over to RDMA first */
|
||||
if (control_save_page(pss, offset, &res)) {
|
||||
if (migrate_rdma()) {
|
||||
res = rdma_control_save_page(pss->pss_channel, pss->block->offset,
|
||||
offset, TARGET_PAGE_SIZE);
|
||||
|
||||
if (res == RAM_SAVE_CONTROL_DELAYED) {
|
||||
res = 1;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -3284,14 +3284,11 @@ err:
|
|||
int rdma_control_save_page(QEMUFile *f, ram_addr_t block_offset,
|
||||
ram_addr_t offset, size_t size)
|
||||
{
|
||||
if (!migrate_rdma()) {
|
||||
return RAM_SAVE_CONTROL_NOT_SUPP;
|
||||
}
|
||||
assert(migrate_rdma());
|
||||
|
||||
int ret = qemu_rdma_save_page(f, block_offset, offset, size);
|
||||
|
||||
if (ret != RAM_SAVE_CONTROL_DELAYED &&
|
||||
ret != RAM_SAVE_CONTROL_NOT_SUPP) {
|
||||
if (ret != RAM_SAVE_CONTROL_DELAYED) {
|
||||
if (ret < 0) {
|
||||
qemu_file_set_error(f, ret);
|
||||
}
|
||||
|
|
|
@ -33,7 +33,6 @@ void rdma_start_incoming_migration(InetSocketAddress *host_port, Error **errp);
|
|||
#define RAM_CONTROL_ROUND 1
|
||||
#define RAM_CONTROL_FINISH 3
|
||||
|
||||
#define RAM_SAVE_CONTROL_NOT_SUPP -1000
|
||||
#define RAM_SAVE_CONTROL_DELAYED -2000
|
||||
|
||||
#ifdef CONFIG_RDMA
|
||||
|
@ -56,7 +55,7 @@ static inline
|
|||
int rdma_control_save_page(QEMUFile *f, ram_addr_t block_offset,
|
||||
ram_addr_t offset, size_t size)
|
||||
{
|
||||
return RAM_SAVE_CONTROL_NOT_SUPP;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue