Here's a slightly updated version of the patchset. In its core it remains however I have addressed a couple of issue, namely :
* Don't initialize the shadow bitmap as all set - this was causing the full ram to be copied always. * Fixed a memory leak in parse_ramblocks_fixed_ram by making the dirty bitmap variable an g_autofree one * Slightly reworked how ram is being copied during restore and now the code is working in chunks of 4mb (might have to tweak this?) For a more general overview of what this series is all about refer to the initial posting [0]. [0] https://lore.kernel.org/qemu-devel/20221004123733.2745519-1-nbori...@suse.com/ Nikolay Borisov (11): migration: support file: uri for source migration migration: Add support for 'file:' uri for incoming migration migration: Make migration json writer part of MigrationState struct io: add pwritev support to QIOChannelFile io: Add support for seekable channels io: Add preadv support to QIOChannelFile migration: add qemu_get_buffer_at migration/ram: Introduce 'fixed-ram' migration stream capability migration: Refactor precopy ram loading code migration: Add support for 'fixed-ram' migration restore analyze-migration.py: add initial support for fixed ram streams include/exec/ramblock.h | 7 + include/io/channel-file.h | 10 + include/io/channel.h | 1 + include/migration/qemu-file-types.h | 2 + io/channel-file.c | 55 +++++ migration/file.c | 38 ++++ migration/file.h | 10 + migration/meson.build | 1 + migration/migration.c | 61 +++++- migration/migration.h | 6 + migration/qemu-file.c | 82 +++++++ migration/qemu-file.h | 4 + migration/ram.c | 328 +++++++++++++++++++++------- migration/savevm.c | 39 ++-- qapi/migration.json | 2 +- scripts/analyze-migration.py | 49 ++++- 16 files changed, 594 insertions(+), 101 deletions(-) create mode 100644 migration/file.c create mode 100644 migration/file.h -- 2.34.1