Bug 1185786

Summary: numatune break libvirt ABI checking for migration
Product: Red Hat Enterprise Linux 7 Reporter: Jincheng Miao <jmiao>
Component: libvirtAssignee: Jiri Denemark <jdenemar>
Status: CLOSED DUPLICATE QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.1CC: berrange, dyuan, honzhang, jdenemar, juzhang, mzhan, rbalakri, wzhang
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-04-29 14:27:16 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Jincheng Miao 2015-01-26 09:53:32 UTC
Description of problem:
For migration between qemu-kvm and qemu-kvm-rhev, if guest configured
<numatune>, then qemu cmdline is generated with '-object memory-backend-ram...'.

However, this argument is not supported for qemu-kvm, so on migration target
side, qemu reports "Unknown ramblock "ram-node0", cannot accept migration ".

But guest without <numatune>, and vcpu placement is 'static', then migration
will be succeed.

Version-Release number of selected component (if applicable):
src:
libvirt-1.2.8-15.el7.x86_64
qemu-kvm-rhev-2.1.2-21.el7.x86_64

dst:
libvirt-1.2.8-15.el7.x86_64
qemu-kvm-1.5.3-85.el7.x86_64

How reproducible:
100%

Steps to Reproduce:
1. on source side with qemu-kvm-rhev
# virsh edit rhel7
...
  <memory unit='KiB'>2097152</memory>
  <vcpu placement='static' current='2'>5</vcpu>
  <numatune>
    <memory mode='strict' nodeset='0'/>
  </numatune>
...
  <cpu>
    <numa>
      <cell id='0' cpus='0-1' memory='1048576'/>
      <cell id='1' cpus='2-3' memory='1048576'/>
    </numa>
  </cpu>
...

2. migration
# virsh migrate rhel7 --live qemu+ssh://$TARGET_IP/system --verbose --unsafe
root@$TARGET_IP's password:
error: operation failed: migration job: unexpectedly failed 

3. check on target side
# tail /var/log/libvirt/qemu/rhel7.log
Unknown ramblock "ram-node0", cannot accept migration
qemu: warning: error while loading state for instance 0x0 of device 'ram'
load of migration failed


Actual results:
failed to migrate

Expected results:
enhance ABI checking

Additional info:
for migration of guest removed <numatune>, it could be succeed
# virsh edit rhel7
...
  <memory unit='KiB'>2097152</memory>
  <vcpu placement='static' current='2'>5</vcpu>
...
  <cpu>
    <numa>
      <cell id='0' cpus='0-1' memory='1048576'/>
      <cell id='1' cpus='2-3' memory='1048576'/>
    </numa>
  </cpu>
...

# virsh start rhel7

# virsh migrate rhel7 --live qemu+ssh://$TARGET_IP/system --verbose --unsafe
root@$TARGET_IP's password: 
Migration: [100 %]

Comment 1 Daniel Berrangé 2015-01-26 09:58:40 UTC
This doesn't look like a bug to me. If the target QEMU doesn't support the numa tune feature, then it is right that migration with <numatune> fails.

Comment 2 Jiri Denemark 2015-01-26 10:05:45 UTC
However, libvirt should detect destination QEMU does not support this feature and migration should not even start.

Comment 3 Jiri Denemark 2015-04-29 14:27:16 UTC

*** This bug has been marked as a duplicate of bug 1191567 ***