qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Recent change pmem related breaks Xen migration


From: Anthony PERARD
Subject: Recent change pmem related breaks Xen migration
Date: Thu, 19 Dec 2019 15:42:14 +0000

Hi,

Commit bd108a44bc29 ("migration: ram: Switch to ram block writeback")
breaks migration on Xen. We have:
  ramblock_ptr: Assertion `offset_in_ramblock(block, offset)' failed.

I've track it down to qemu_ram_writeback() calling ramblock_ptr()
unconditionally, even when the result will not be used.

Maybe we could call ramblock_ptr() twice in that function? I've prepared
a patch.


FYI, full-ish trace on restore of a xen guest:
#3  0x00007f82d0848526 in __assert_fail () from /usr/lib/libc.so.6
#4  0x0000562dc4578122 in ramblock_ptr (block=0x562dc5ebe2a0, offset=0) at 
/root/build/qemu/include/exec/ram_addr.h:120
#5  0x0000562dc457d1b7 in qemu_ram_writeback (block=0x562dc5ebe2a0, start=0, 
length=515899392) at /root/build/qemu/exec.c:2169
#6  0x0000562dc45e8941 in qemu_ram_block_writeback (block=0x562dc5ebe2a0) at 
/root/build/qemu/include/exec/ram_addr.h:182
#7  0x0000562dc45f0b56 in ram_load_cleanup (opaque=0x562dc510fe00 <ram_state>) 
at /root/build/qemu/migration/ram.c:3983
#8  0x0000562dc49970b6 in qemu_loadvm_state_cleanup () at 
migration/savevm.c:2415
#9  0x0000562dc4997548 in qemu_loadvm_state (f=0x562dc6a1c600) at 
migration/savevm.c:2597
#10 0x0000562dc4987be7 in process_incoming_migration_co (opaque=0x0) at 
migration/migration.c:454
#11 0x0000562dc4b907e5 in coroutine_trampoline (i0=-962514432, i1=22061) at 
util/coroutine-ucontext.c:115

And *block in ramblock_ptr():
(gdb) p *block
$2 = {
  rcu = {
    next = 0x0, 
    func = 0x0
  }, 
  mr = 0x562dc512e140 <ram_memory>, 
  host = 0x0, 
  colo_cache = 0x0, 
  offset = 0, 
  used_length = 515899392, 
  max_length = 515899392, 
  resized = 0x0, 
  flags = 16, 
  idstr = "xen.ram", '\000' <repeats 248 times>, 
  next = {
    le_next = 0x562dc67bf7e0, 
    le_prev = 0x562dc510f1a0 <ram_list+64>
  }, 
  ramblock_notifiers = {
    lh_first = 0x0
  }, 
  fd = -1, 
  page_size = 4096, 
  bmap = 0x0, 
  receivedmap = 0x562dc6a24a60, 
  clear_bmap = 0x0, 
  clear_bmap_shift = 0 '\000'
}

Cheers,

-- 
Anthony PERARD



reply via email to

[Prev in Thread] Current Thread [Next in Thread]