[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v4 13/34] migration/ram: Add outgoing 'fixed-ram' migration
From: |
Peter Xu |
Subject: |
Re: [PATCH v4 13/34] migration/ram: Add outgoing 'fixed-ram' migration |
Date: |
Mon, 26 Feb 2024 12:03:27 +0800 |
On Tue, Feb 20, 2024 at 07:41:17PM -0300, Fabiano Rosas wrote:
> Implement the outgoing migration side for the 'fixed-ram' capability.
>
> A bitmap is introduced to track which pages have been written in the
> migration file. Pages are written at a fixed location for every
> ramblock. Zero pages are ignored as they'd be zero in the destination
> migration as well.
>
> The migration stream is altered to put the dirty pages for a ramblock
> after its header instead of having a sequential stream of pages that
> follow the ramblock headers.
>
> Without fixed-ram (current): With fixed-ram (new):
>
> --------------------- --------------------------------
> | ramblock 1 header | | ramblock 1 header |
> --------------------- --------------------------------
> | ramblock 2 header | | ramblock 1 fixed-ram header |
> --------------------- --------------------------------
> | ... | | padding to next 1MB boundary |
> --------------------- | ... |
> | ramblock n header | --------------------------------
> --------------------- | ramblock 1 pages |
> | RAM_SAVE_FLAG_EOS | | ... |
> --------------------- --------------------------------
> | stream of pages | | ramblock 2 header |
> | (iter 1) | --------------------------------
> | ... | | ramblock 2 fixed-ram header |
> --------------------- --------------------------------
> | RAM_SAVE_FLAG_EOS | | padding to next 1MB boundary |
> --------------------- | ... |
> | stream of pages | --------------------------------
> | (iter 2) | | ramblock 2 pages |
> | ... | | ... |
> --------------------- --------------------------------
> | ... | | ... |
> --------------------- --------------------------------
> | RAM_SAVE_FLAG_EOS |
> --------------------------------
> | ... |
> --------------------------------
>
> where:
> - ramblock header: the generic information for a ramblock, such as
> idstr, used_len, etc.
>
> - ramblock fixed-ram header: the new information added by this
> feature: bitmap of pages written, bitmap size and offset of pages
> in the migration file.
>
> Signed-off-by: Nikolay Borisov <nborisov@suse.com>
> Signed-off-by: Fabiano Rosas <farosas@suse.de>
Reviewed-by: Peter Xu <peterx@redhat.com>
Still one comment below:
[...]
> @@ -3187,6 +3288,18 @@ static int ram_save_complete(QEMUFile *f, void *opaque)
> return ret;
> }
>
> + if (migrate_fixed_ram()) {
> + ram_save_file_bmap(f);
> +
> + if (qemu_file_get_error(f)) {
> + Error *local_err = NULL;
> + int err = qemu_file_get_error_obj(f, &local_err);
> +
> + error_reportf_err(local_err, "Failed to write bitmap to file: ");
We always do error report if we set s->error.
Ideally I think we should have Error** passed to the caller and set
s->error there, instead of report here. But the whole error handling is
still a bit of a mess, so I guess we can do anything on top.
> + return -err;
> + }
> + }
--
Peter Xu
[PATCH v4 12/34] migration: Add fixed-ram URI compatibility check, Fabiano Rosas, 2024/02/20
[PATCH v4 13/34] migration/ram: Add outgoing 'fixed-ram' migration, Fabiano Rosas, 2024/02/20
- Re: [PATCH v4 13/34] migration/ram: Add outgoing 'fixed-ram' migration,
Peter Xu <=
[PATCH v4 14/34] migration/ram: Add incoming 'fixed-ram' migration, Fabiano Rosas, 2024/02/20
[PATCH v4 15/34] tests/qtest/migration: Add tests for fixed-ram file-based migration, Fabiano Rosas, 2024/02/20
[PATCH v4 16/34] migration/multifd: Rename MultiFDSend|RecvParams::data to compress_data, Fabiano Rosas, 2024/02/20
[PATCH v4 17/34] migration/multifd: Decouple recv method from pages, Fabiano Rosas, 2024/02/20
[PATCH v4 18/34] migration/multifd: Allow multifd without packets, Fabiano Rosas, 2024/02/20
[PATCH v4 20/34] migration/multifd: Add outgoing QIOChannelFile support, Fabiano Rosas, 2024/02/20