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:
Peter Xu 2022-10-11 17:55:59 -04:00 committed by Juan Quintela
parent b062106d3a
commit 7f401b8044
1 changed files with 4 additions and 8 deletions

View File

@ -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;
} }