]> git.proxmox.com Git - mirror_qemu.git/commit - migration/ram.c
migration/multifd: Support outgoing mapped-ram stream format
authorFabiano Rosas <farosas@suse.de>
Thu, 29 Feb 2024 15:30:14 +0000 (12:30 -0300)
committerPeter Xu <peterx@redhat.com>
Fri, 1 Mar 2024 07:42:04 +0000 (15:42 +0800)
commitf427d90b9898dd7a718b645eeccd9d0ee75d4295
tree71f7e5e2468c3a712a19c28c0613224f7fdd4e30
parent9d01778af8e39f5b0f101d0a9f32215717604bef
migration/multifd: Support outgoing mapped-ram stream format

The new mapped-ram stream format uses a file transport and puts ram
pages in the migration file at their respective offsets and can be
done in parallel by using the pwritev system call which takes iovecs
and an offset.

Add support to enabling the new format along with multifd to make use
of the threading and page handling already in place.

This requires multifd to stop sending headers and leaving the stream
format to the mapped-ram code. When it comes time to write the data, we
need to call a version of qio_channel_write that can take an offset.

Usage on HMP is:

(qemu) stop
(qemu) migrate_set_capability multifd on
(qemu) migrate_set_capability mapped-ram on
(qemu) migrate_set_parameter max-bandwidth 0
(qemu) migrate_set_parameter multifd-channels 8
(qemu) migrate file:migfile

Reviewed-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Fabiano Rosas <farosas@suse.de>
Link: https://lore.kernel.org/r/20240229153017.2221-21-farosas@suse.de
Signed-off-by: Peter Xu <peterx@redhat.com>
include/qemu/bitops.h
migration/file.c
migration/file.h
migration/migration.c
migration/multifd.c
migration/options.c
migration/ram.c
migration/ram.h