[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 6/9] vl.c: fix migration failure for 3.1 and older machine types
From: |
Dr. David Alan Gilbert (git) |
Subject: |
[PULL 6/9] vl.c: fix migration failure for 3.1 and older machine types |
Date: |
Wed, 25 Mar 2020 13:16:29 +0000 |
From: Igor Mammedov <address@hidden>
Migration from QEMU(v4.0) fails when using 3.1 or older machine
type. For example if one attempts to migrate
QEMU-2.12 started as
qemu-system-ppc64 -nodefaults -M pseries-2.12 -m 4096 -mem-path /tmp/
to current master, it will fail with
qemu-system-ppc64: Unknown ramblock "ppc_spapr.ram", cannot accept migration
qemu-system-ppc64: error while loading state for instance 0x0 of device 'ram'
qemu-system-ppc64: load of migration failed: Invalid argument
Caused by 900c0ba373 commit which switches main RAM allocation to
memory backends and the fact in 3.1 and older QEMU, backends used
full[***] QOM path as memory region name instead of backend's name.
That was changed after 3.1 to use prefix-less names by default
(fa0cb34d22) for new machine types.
*** effectively makes main RAM memory region names defined by
MachineClass::default_ram_id being altered with '/objects/' prefix
and therefore migration fails as old QEMU sends prefix-less
name while new QEMU expects name with prefix when using 3.1 and
older machine types.
Fix it by forcing implicit[1] memory backend to always use
prefix-less names for its memory region by setting
'x-use-canonical-path-for-ramblock-id'
property to false.
1) i.e. memory backend created by compat glue which maps
-m/-mem-path/-mem-prealloc/default RAM size into
appropriate backend type/options to match old CLI format.
Fixes: 900c0ba373
Signed-off-by: Igor Mammedov <address@hidden>
Reported-by: Lukáš Doktor <address@hidden>
Message-Id: <address@hidden>
Tested-by: Lukáš Doktor <address@hidden>
Reviewed-by: Marc-André Lureau <address@hidden>
Signed-off-by: Dr. David Alan Gilbert <address@hidden>
---
softmmu/vl.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/softmmu/vl.c b/softmmu/vl.c
index 1d33a28340..814537bb42 100644
--- a/softmmu/vl.c
+++ b/softmmu/vl.c
@@ -2801,6 +2801,9 @@ static void create_default_memdev(MachineState *ms, const
char *path)
object_property_set_int(obj, ms->ram_size, "size", &error_fatal);
object_property_add_child(object_get_objects_root(), mc->default_ram_id,
obj, &error_fatal);
+ /* Ensure backend's memory region name is equal to mc->default_ram_id */
+ object_property_set_bool(obj, false,
"x-use-canonical-path-for-ramblock-id",
+ &error_fatal);
user_creatable_complete(USER_CREATABLE(obj), &error_fatal);
object_unref(obj);
object_property_set_str(OBJECT(ms), mc->default_ram_id, "memory-backend",
--
2.25.1
- [PULL 0/9] migration queue, Dr. David Alan Gilbert (git), 2020/03/25
- [PULL 2/9] xbzrle: update xbzrle doc, Dr. David Alan Gilbert (git), 2020/03/25
- [PULL 1/9] hmp-cmd: fix a missing_break warning, Dr. David Alan Gilbert (git), 2020/03/25
- [PULL 3/9] tests/migration: Reduce autoconverge initial bandwidth, Dr. David Alan Gilbert (git), 2020/03/25
- [PULL 4/9] hmp/vnc: Fix info vnc list leak, Dr. David Alan Gilbert (git), 2020/03/25
- [PULL 5/9] tools/virtiofsd/passthrough_ll: Fix double close(), Dr. David Alan Gilbert (git), 2020/03/25
- [PULL 6/9] vl.c: fix migration failure for 3.1 and older machine types,
Dr. David Alan Gilbert (git) <=
- [PULL 7/9] migration/colo: fix use after free of local_err, Dr. David Alan Gilbert (git), 2020/03/25
- [PULL 9/9] migration: use "" instead of (null) for tls-authz, Dr. David Alan Gilbert (git), 2020/03/25
- [PULL 8/9] migration/ram: fix use after free of local_err, Dr. David Alan Gilbert (git), 2020/03/25
- Re: [PULL 0/9] migration queue, Peter Maydell, 2020/03/26