mirror of https://github.com/xemu-project/xemu.git
migration: Drop rs->f
Now with rs->pss we can already cache channels in pss->pss_channels. That pss_channel contains more infromation than rs->f because it's per-channel. So rs->f could be replaced by rss->pss[RAM_CHANNEL_PRECOPY].pss_channel, while rs->f itself is a bit vague now. Note that vanilla postcopy still send pages via pss[RAM_CHANNEL_PRECOPY], that's slightly confusing but it reflects the reality. Then, after the replacement we can safely drop rs->f. Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Signed-off-by: Peter Xu <peterx@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
parent
b062106d3a
commit
7f401b8044
|
@ -323,8 +323,6 @@ struct RAMSrcPageRequest {
|
||||||
|
|
||||||
/* State of RAM for migration */
|
/* State of RAM for migration */
|
||||||
struct RAMState {
|
struct RAMState {
|
||||||
/* QEMUFile used for this migration */
|
|
||||||
QEMUFile *f;
|
|
||||||
/*
|
/*
|
||||||
* PageSearchStatus structures for the channels when send pages.
|
* PageSearchStatus structures for the channels when send pages.
|
||||||
* Protected by the bitmap_mutex.
|
* Protected by the bitmap_mutex.
|
||||||
|
@ -2532,8 +2530,6 @@ static int ram_find_and_save_block(RAMState *rs)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (found) {
|
if (found) {
|
||||||
/* Cache rs->f in pss_channel (TODO: remove rs->f) */
|
|
||||||
pss->pss_channel = rs->f;
|
|
||||||
pages = ram_save_host_page(rs, pss);
|
pages = ram_save_host_page(rs, pss);
|
||||||
}
|
}
|
||||||
} while (!pages && again);
|
} while (!pages && again);
|
||||||
|
@ -3089,7 +3085,7 @@ static void ram_state_resume_prepare(RAMState *rs, QEMUFile *out)
|
||||||
ram_state_reset(rs);
|
ram_state_reset(rs);
|
||||||
|
|
||||||
/* Update RAMState cache of output QEMUFile */
|
/* Update RAMState cache of output QEMUFile */
|
||||||
rs->f = out;
|
rs->pss[RAM_CHANNEL_PRECOPY].pss_channel = out;
|
||||||
|
|
||||||
trace_ram_state_resume_prepare(pages);
|
trace_ram_state_resume_prepare(pages);
|
||||||
}
|
}
|
||||||
|
@ -3180,7 +3176,7 @@ static int ram_save_setup(QEMUFile *f, void *opaque)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
(*rsp)->f = f;
|
(*rsp)->pss[RAM_CHANNEL_PRECOPY].pss_channel = f;
|
||||||
|
|
||||||
WITH_RCU_READ_LOCK_GUARD() {
|
WITH_RCU_READ_LOCK_GUARD() {
|
||||||
qemu_put_be64(f, ram_bytes_total_common(true) | RAM_SAVE_FLAG_MEM_SIZE);
|
qemu_put_be64(f, ram_bytes_total_common(true) | RAM_SAVE_FLAG_MEM_SIZE);
|
||||||
|
@ -3315,7 +3311,7 @@ static int ram_save_iterate(QEMUFile *f, void *opaque)
|
||||||
out:
|
out:
|
||||||
if (ret >= 0
|
if (ret >= 0
|
||||||
&& migration_is_setup_or_active(migrate_get_current()->state)) {
|
&& migration_is_setup_or_active(migrate_get_current()->state)) {
|
||||||
ret = multifd_send_sync_main(rs->f);
|
ret = multifd_send_sync_main(rs->pss[RAM_CHANNEL_PRECOPY].pss_channel);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -3385,7 +3381,7 @@ static int ram_save_complete(QEMUFile *f, void *opaque)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = multifd_send_sync_main(rs->f);
|
ret = multifd_send_sync_main(rs->pss[RAM_CHANNEL_PRECOPY].pss_channel);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue