[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH COLO-Frame v15 27/38] migration/savevm: Add new
From: |
Dr. David Alan Gilbert |
Subject: |
Re: [Qemu-devel] [PATCH COLO-Frame v15 27/38] migration/savevm: Add new helpers to process the different stages of loadvm |
Date: |
Fri, 26 Feb 2016 12:52:02 +0000 |
User-agent: |
Mutt/1.5.24 (2015-08-30) |
* zhanghailiang (address@hidden) wrote:
> There are several stages during loadvm process. In different stage,
> migration incoming processes different section.
> We want to control these stages more accuracy, to optimize the COLO
> capability.
>
> Here we add two new helper functions: qemu_loadvm_state_begin()
> and qemu_load_device_state().
> Besides, we make qemu_loadvm_state_main() API public.
>
> Signed-off-by: zhanghailiang <address@hidden>
> Signed-off-by: Li Zhijian <address@hidden>
Reviewed-by: Dr. David Alan Gilbert <address@hidden>
It's interesting; there's not that much difference between the two
routines, and they only wrap a little around the loadvm_state_main,
but I can see it makes it clearer at the place they're called.
Dave
> ---
> v14:
> - Split from patch 'COLO: Separate the process of saving/loading
> ram and device state
> ---
> include/sysemu/sysemu.h | 3 +++
> migration/savevm.c | 38 +++++++++++++++++++++++++++++++++++---
> 2 files changed, 38 insertions(+), 3 deletions(-)
>
> diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
> index 91eeda3..c0694a1 100644
> --- a/include/sysemu/sysemu.h
> +++ b/include/sysemu/sysemu.h
> @@ -134,6 +134,9 @@ void qemu_savevm_send_postcopy_ram_discard(QEMUFile *f,
> const char *name,
> uint64_t *length_list);
>
> int qemu_loadvm_state(QEMUFile *f);
> +int qemu_loadvm_state_begin(QEMUFile *f);
> +int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis);
> +int qemu_load_device_state(QEMUFile *f);
>
> typedef enum DisplayType
> {
> diff --git a/migration/savevm.c b/migration/savevm.c
> index 9e3c18a..954e0a7 100644
> --- a/migration/savevm.c
> +++ b/migration/savevm.c
> @@ -1249,8 +1249,6 @@ enum LoadVMExitCodes {
> LOADVM_QUIT = 1,
> };
>
> -static int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis);
> -
> /* ------ incoming postcopy messages ------ */
> /* 'advise' arrives before any transfers just to tell us that a postcopy
> * *might* happen - it might be skipped if precopy transferred everything
> @@ -1832,7 +1830,7 @@ qemu_loadvm_section_part_end(QEMUFile *f,
> MigrationIncomingState *mis)
> return 0;
> }
>
> -static int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis)
> +int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis)
> {
> uint8_t section_type;
> int ret;
> @@ -1965,6 +1963,40 @@ int qemu_loadvm_state(QEMUFile *f)
> return ret;
> }
>
> +int qemu_loadvm_state_begin(QEMUFile *f)
> +{
> + MigrationIncomingState *mis = migration_incoming_get_current();
> + Error *local_err = NULL;
> + int ret;
> +
> + if (qemu_savevm_state_blocked(&local_err)) {
> + error_report_err(local_err);
> + return -EINVAL;
> + }
> + /* Load QEMU_VM_SECTION_START section */
> + ret = qemu_loadvm_state_main(f, mis);
> + if (ret < 0) {
> + error_report("Failed to loadvm begin work: %d", ret);
> + }
> + return ret;
> +}
> +
> +int qemu_load_device_state(QEMUFile *f)
> +{
> + MigrationIncomingState *mis = migration_incoming_get_current();
> + int ret;
> +
> + /* Load QEMU_VM_SECTION_FULL section */
> + ret = qemu_loadvm_state_main(f, mis);
> + if (ret < 0) {
> + error_report("Failed to load device state: %d", ret);
> + return ret;
> + }
> +
> + cpu_synchronize_all_post_init();
> + return 0;
> +}
> +
> void hmp_savevm(Monitor *mon, const QDict *qdict)
> {
> BlockDriverState *bs, *bs1;
> --
> 1.8.3.1
>
>
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK
- [Qemu-devel] [PATCH COLO-Frame v15 26/38] savevm: Introduce two helper functions for save/find loadvm_handlers entry, (continued)
- [Qemu-devel] [PATCH COLO-Frame v15 26/38] savevm: Introduce two helper functions for save/find loadvm_handlers entry, zhanghailiang, 2016/02/21
- [Qemu-devel] [PATCH COLO-Frame v15 34/38] COLO/filter: add each netdev a buffer filter, zhanghailiang, 2016/02/21
- [Qemu-devel] [PATCH COLO-Frame v15 21/38] qmp event: Add COLO_EXIT event to notify users while exited from COLO, zhanghailiang, 2016/02/21
- [Qemu-devel] [PATCH COLO-Frame v15 31/38] net/filter: Add a 'status' property for filter object, zhanghailiang, 2016/02/21
- [Qemu-devel] [PATCH COLO-Frame v15 38/38] COLO: Add block replication into colo process, zhanghailiang, 2016/02/21
- [Qemu-devel] [PATCH COLO-Frame v15 22/38] COLO failover: Shutdown related socket fd when do failover, zhanghailiang, 2016/02/21
- [Qemu-devel] [PATCH COLO-Frame v15 36/38] filter-buffer: make filter_buffer_flush() public, zhanghailiang, 2016/02/21
- [Qemu-devel] [PATCH COLO-Frame v15 37/38] COLO: flush buffered packets in checkpoint process or exit COLO, zhanghailiang, 2016/02/21
- [Qemu-devel] [PATCH COLO-Frame v15 16/38] COLO: synchronize PVM's state to SVM periodically, zhanghailiang, 2016/02/21
- [Qemu-devel] [PATCH COLO-Frame v15 27/38] migration/savevm: Add new helpers to process the different stages of loadvm, zhanghailiang, 2016/02/21
- Re: [Qemu-devel] [PATCH COLO-Frame v15 27/38] migration/savevm: Add new helpers to process the different stages of loadvm,
Dr. David Alan Gilbert <=
- [Qemu-devel] [PATCH COLO-Frame v15 28/38] migration/savevm: Export two helper functions for savevm process, zhanghailiang, 2016/02/21
- Re: [Qemu-devel] [PATCH COLO-Frame v15 00/38] COarse-grain LOck-stepping(COLO) Virtual Machines for Non-stop Service (FT), Dr. David Alan Gilbert, 2016/02/25