mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-09-06 01:43:39 +00:00
migration/multifd: Document two places for mapped-ram
Add two documentations for mapped-ram migration on two spots that may not be extremely clear. Reviewed-by: Fabiano Rosas <farosas@suse.de> Link: https://lore.kernel.org/r/20240301091524.39900-1-peterx@redhat.com Cc: Prasad Pandit <ppandit@redhat.com> [peterx: fix two English errors per Prasad] Signed-off-by: Peter Xu <peterx@redhat.com>
This commit is contained in:
parent
7a09f09283
commit
1a6e217c35
|
@ -709,6 +709,18 @@ static bool multifd_send_cleanup_channel(MultiFDSendParams *p, Error **errp)
|
||||||
{
|
{
|
||||||
if (p->c) {
|
if (p->c) {
|
||||||
migration_ioc_unregister_yank(p->c);
|
migration_ioc_unregister_yank(p->c);
|
||||||
|
/*
|
||||||
|
* An explicit close() on the channel here is normally not
|
||||||
|
* required, but can be helpful for "file:" iochannels, where it
|
||||||
|
* will include fdatasync() to make sure the data is flushed to the
|
||||||
|
* disk backend.
|
||||||
|
*
|
||||||
|
* The object_unref() cannot guarantee that because: (1) finalize()
|
||||||
|
* of the iochannel is only triggered on the last reference, and
|
||||||
|
* it's not guaranteed that we always hold the last refcount when
|
||||||
|
* reaching here, and, (2) even if finalize() is invoked, it only
|
||||||
|
* does a close(fd) without data flush.
|
||||||
|
*/
|
||||||
qio_channel_close(p->c, &error_abort);
|
qio_channel_close(p->c, &error_abort);
|
||||||
object_unref(OBJECT(p->c));
|
object_unref(OBJECT(p->c));
|
||||||
p->c = NULL;
|
p->c = NULL;
|
||||||
|
|
|
@ -4258,7 +4258,13 @@ static int ram_load_precopy(QEMUFile *f)
|
||||||
switch (flags & ~RAM_SAVE_FLAG_CONTINUE) {
|
switch (flags & ~RAM_SAVE_FLAG_CONTINUE) {
|
||||||
case RAM_SAVE_FLAG_MEM_SIZE:
|
case RAM_SAVE_FLAG_MEM_SIZE:
|
||||||
ret = parse_ramblocks(f, addr);
|
ret = parse_ramblocks(f, addr);
|
||||||
|
/*
|
||||||
|
* For mapped-ram migration (to a file) using multifd, we sync
|
||||||
|
* once and for all here to make sure all tasks we queued to
|
||||||
|
* multifd threads are completed, so that all the ramblocks
|
||||||
|
* (including all the guest memory pages within) are fully
|
||||||
|
* loaded after this sync returns.
|
||||||
|
*/
|
||||||
if (migrate_mapped_ram()) {
|
if (migrate_mapped_ram()) {
|
||||||
multifd_recv_sync_main();
|
multifd_recv_sync_main();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue