migration: Properly wait on G_IO_IN when peeking messages

migration_channel_read_peek() used to do explicit waits of a short period
when peeking message needs retry.  Replace it with explicit polls on the io
channel, exactly like what qemu_fill_buffer() does.

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
Link: https://lore.kernel.org/r/20251022192612.2737648-3-peterx@redhat.com
Signed-off-by: Peter Xu <peterx@redhat.com>
This commit is contained in:
Peter Xu
2025-10-22 15:26:01 -04:00
parent 1edf0df284
commit 604bb1badc

View File

@@ -135,12 +135,7 @@ int migration_channel_read_peek(QIOChannel *ioc,
break;
}
/* 1ms sleep. */
if (qemu_in_coroutine()) {
qemu_co_sleep_ns(QEMU_CLOCK_REALTIME, 1000000);
} else {
g_usleep(1000);
}
qio_channel_wait_cond(ioc, G_IO_IN);
}
return 0;