migration: Simplify ram_find_and_save_block()

We will need later that find_dirty_block() return errors, so
simplify the loop.

Signed-off-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
Juan Quintela 2022-06-21 13:20:35 +02:00
parent c40c046341
commit 51efd36faf

View file

@ -2542,7 +2542,6 @@ static int ram_find_and_save_block(RAMState *rs)
{
PageSearchStatus *pss = &rs->pss[RAM_CHANNEL_PRECOPY];
int pages = 0;
bool again, found;
/* No dirty page as there is zero RAM */
if (!ram_bytes_total()) {
@ -2564,18 +2563,17 @@ static int ram_find_and_save_block(RAMState *rs)
pss_init(pss, rs->last_seen_block, rs->last_page);
do {
again = true;
found = get_queued_page(rs, pss);
if (!found) {
if (!get_queued_page(rs, pss)) {
/* priority queue empty, so just search for something dirty */
found = find_dirty_block(rs, pss, &again);
bool again = true;
if (!find_dirty_block(rs, pss, &again)) {
if (!again) {
break;
}
}
}
if (found) {
pages = ram_save_host_page(rs, pss);
}
} while (!pages && again);
pages = ram_save_host_page(rs, pss);
} while (!pages);
rs->last_seen_block = pss->block;
rs->last_page = pss->page;