Bug 1032413 - qemu-kvm default 8139 network card block migration from rhel6.5 to rhel7.0 host
qemu-kvm default 8139 network card block migration from rhel6.5 to rhel7.0 host
Status: CLOSED NOTABUG
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: qemu-kvm (Show other bugs)
7.0
x86_64 Linux
high Severity medium
: rc
: ---
Assigned To: jason wang
Virtualization Bugs
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2013-11-20 01:51 EST by FuXiangChun
Modified: 2013-11-26 01:00 EST (History)
11 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2013-11-26 01:00:13 EST
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description FuXiangChun 2013-11-20 01:51:08 EST
Description of problem:
Start qemu-kvm without '-net none' option or any network device(virtio-net-pci e1000 and rtl8139). then qemu-kvm will add a default 8139 network card automatically.  It will block migration from rhel6.5 to rhel7.0 host.  qemu-kvm monitor will show error message in destination. 

Unknown ramblock "0000:00:03.0/rtl8139.rom", cannot accept migration
qemu: warning: error while loading state for instance 0x0 of device 'ram'
load of migration failed

Bug 997702 don't cover this scenarios. so open a new bug to track it.

Version-Release number of selected component (if applicable):
rhel6.5 host:
2.6.32-428.el6.x86_64
qemu-kvm-0.12.1.2-2.415.el6.x86_64

rhel7.0 host:
3.10.0-41.el7.x86_64
qemu-kvm-1.5.3-19.el7.x86_64

How reproducible:
100%

Steps to Reproduce:
1.In src
 /usr/libexec/qemu-kvm -M rhel6.5.0 -cpu SandyBridge -enable-kvm -m 2G -smp 4 -name rhel7.0 -rtc base=localtime,clock=host,driftfix=slew -uuid 6afa5f93-2d4f-420f-81c6-e5fdddbd1c83 -spice disable-ticketing,port=5931 -monitor stdio -drive file=/mnt/RHEL6.5-20130913.0-64bit.qcow2,if=none,id=drive-data-disk2,format=qcow2,werror=stop,rerror=stop -device virtio-blk-pci,drive=drive-data-disk2,id=systemos -boot menu=on -vnc :1

2.In des
/usr/libexec/qemu-kvm -M rhel6.5.0 -cpu SandyBridge -enable-kvm -m 2G -smp 4 -name rhel7.0 -rtc base=localtime,clock=host,driftfix=slew -uuid 6afa5f93-2d4f-420f-81c6-e5fdddbd1c83 -spice disable-ticketing,port=5931 -monitor stdio -drive file=/mnt/RHEL6.5-20131019.1_Server_x86_64.qcow2bk,if=none,id=drive-data-disk2,format=qcow2,werror=stop,rerror=stop -device virtio-blk-pci,drive=drive-data-disk2,id=systemos -boot menu=on -vnc :1 -incoming tcp:0:5555

3.(qemu) migrate -d tcp:$des-ip:5555

Actual results:
Unknown ramblock "0000:00:03.0/rtl8139.rom", cannot accept migration
qemu: warning: error while loading state for instance 0x0 of device 'ram'
load of migration failed

Expected results:
migration is successful

Additional info:
If booting guest with virtio-net-pci e1000 rtl8139 network card or disable network with -net none option. then migration is successful(bug 997702 has fixed this issue).

Machine type rhel6.0.0~rhel6.5.0 have the same issue.
Comment 1 juzhang 2013-11-22 02:57:33 EST
The infos might be the root reason for this issue.

On rhel6.5 host, the default network is rtl8139.

#/user/libesec/qemu-kvm -monitor stdio
(qemu)info network
xxx
rtl8139xxxxxxxxxxxxxxxxxxxxxxxx


On RHEL7.0 host, the default network is e1000
#/user/libesec/qemu-kvm -monitor stdio
(qemu)info network
xxx
e1000xxxxxxxxxxxxxxxxxxxxxxxx
Comment 2 Ronen Hod 2013-11-24 04:51:38 EST
Seems like the RHEL7 "-M rhel6.5.0" does not apply the same defaults.
Comment 3 Amos Kong 2013-11-24 07:05:07 EST
I don't think this is a bug.

RHEL6 & RHEL7 have different default nic, if you don't want to touch this problem, you can explicitly assign a rtl8139 nic to dest VM (by "-net nic,model=rtl8139 -net user")

We couldn't fix it by changing the default nic to e1000 if machine type is rhel6.5.0
Comment 4 juzhang 2013-11-24 21:21:22 EST
(In reply to Amos Kong from comment #3)
> I don't think this is a bug.
> 
> RHEL6 & RHEL7 have different default nic, if you don't want to touch this
> problem, you can explicitly assign a rtl8139 nic to dest VM (by "-net
> nic,model=rtl8139 -net user")
> 
> We couldn't fix it by changing the default nic to e1000 if machine type is
> rhel6.5.0

Hi Akong,

Thanks for your explanation first.

From QE POV.

1. Change the default nic in RHEL6 and RHEL7.0 product might break compatibility, like this bug. Yes, QE could explicitly or specify what we want but user/customer might do not know unless we do the following 3 things.
1. fix in qemu-kvm
2. do some limitation in libvirt or rhev-m or openstack.
3. open a doc bug as note release.

Best Regards,
Junyi
Comment 5 jason wang 2013-11-25 00:32:03 EST
I don't think it's a bug. And libvirt should use -nodefaults to prevent the default devices to be created unexpectedly.

Could you pls test with libvirt (and without configuring any network cards)?
Comment 6 juzhang 2013-11-25 05:03:01 EST
Hi Xiangchun,

Could you reply comment5?

Best Regards,
Junyi
Comment 7 FuXiangChun 2013-11-25 09:57:50 EST
(In reply to juzhang from comment #6)
> Hi Xiangchun,
> 
> Could you reply comment5?
> 
> Best Regards,
> Junyi

I am preparing environment, and will update result asap.
Comment 8 FuXiangChun 2013-11-25 22:07:06 EST
Re-tested this bug with virsh.

result: 
As comment5's description. without network devices and -net none option. Libvirt use -nodefaults to prevent the default devices(rtl8139 nic).  migration is successful from rhel6.5 to rhel7.0 host. so libvirt can resolve this issue.
Comment 9 jason wang 2013-11-26 01:00:13 EST
(In reply to FuXiangChun from comment #8)
> Re-tested this bug with virsh.
> 
> result: 
> As comment5's description. without network devices and -net none option.
> Libvirt use -nodefaults to prevent the default devices(rtl8139 nic). 
> migration is successful from rhel6.5 to rhel7.0 host. so libvirt can resolve
> this issue.

Thanks, closing this.

Note You need to log in before you can comment on or make changes to this bug.