[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 4/4] migration: Check in savevm_state_handler_insert for d
From: |
Dr. David Alan Gilbert |
Subject: |
Re: [PATCH v2 4/4] migration: Check in savevm_state_handler_insert for dups |
Date: |
Wed, 16 Oct 2019 10:14:44 +0100 |
User-agent: |
Mutt/1.12.1 (2019-06-15) |
* Peter Xu (address@hidden) wrote:
> Before finally register one SaveStateEntry, we detect for duplicated
> entries. This could be helpful to notify us asap instead of get
> silent migration failures which could be hard to diagnose.
>
> For example, this patch will generate a message like this (if without
> previous fixes on x2apic) as long as we wants to boot a VM instance
> with "-smp 200,maxcpus=288,sockets=2,cores=72,threads=2" and QEMU will
> bail out even before VM starts:
>
> savevm_state_handler_insert: Detected duplicate SaveStateEntry: id=apic,
> instance_id=0x0
>
> Suggested-by: Dr. David Alan Gilbert <address@hidden>
> Signed-off-by: Peter Xu <address@hidden>
Right, lets see what this triggers :-)
Reviewed-by: Dr. David Alan Gilbert <address@hidden>
> ---
> migration/savevm.c | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/migration/savevm.c b/migration/savevm.c
> index 1e44f06d7a..83e91ddafa 100644
> --- a/migration/savevm.c
> +++ b/migration/savevm.c
> @@ -264,6 +264,8 @@ static SaveState savevm_state = {
> .global_section_id = 0,
> };
>
> +static SaveStateEntry *find_se(const char *idstr, uint32_t instance_id);
> +
> static bool should_validate_capability(int capability)
> {
> assert(capability >= 0 && capability < MIGRATION_CAPABILITY__MAX);
> @@ -714,6 +716,18 @@ static void savevm_state_handler_insert(SaveStateEntry
> *nse)
>
> assert(priority <= MIG_PRI_MAX);
>
> + /*
> + * This should never happen otherwise migration will probably fail
> + * silently somewhere because we can be wrongly applying one
> + * object properties upon another one. Bail out ASAP.
> + */
> + if (find_se(nse->idstr, nse->instance_id)) {
> + error_report("%s: Detected duplicate SaveStateEntry: "
> + "id=%s, instance_id=0x%"PRIx32, __func__,
> + nse->idstr, nse->instance_id);
> + exit(EXIT_FAILURE);
> + }
> +
> QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
> if (save_state_priority(se) < priority) {
> break;
> --
> 2.21.0
>
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK
- [PATCH v2 0/4] apic: Fix migration breakage of >255 vcpus, Peter Xu, 2019/10/15
- [PATCH v2 1/4] migration: Define VMSTATE_INSTANCE_ID_ANY, Peter Xu, 2019/10/15
- [PATCH v2 2/4] migration: Change SaveStateEntry.instance_id into uint32_t, Peter Xu, 2019/10/15
- [PATCH v2 3/4] apic: Use 32bit APIC ID for migration instance ID, Peter Xu, 2019/10/15
- [PATCH v2 4/4] migration: Check in savevm_state_handler_insert for dups, Peter Xu, 2019/10/15
- Re: [PATCH v2 0/4] apic: Fix migration breakage of >255 vcpus, Eduardo Habkost, 2019/10/16
- Re: [PATCH v2 0/4] apic: Fix migration breakage of >255 vcpus, Peter Xu, 2019/10/23