Discussion:
[libvirt] 转发: [bug confirm] Requested operation is not valid: migration with shmem device is not supported
吴 雨霖
2018-12-10 08:39:36 UTC
Permalink
1.Description of problem:

It report use migration with shmem device is not supported , when I use the command "virsh migrate --live" to migrate a VM to another host.



2.Version-Release number of selected component (if applicable):

libvirt 3.9.0

qemu-kvm 2.8.1



3.Steps to Reproduce:

1) Add serveral lines below to guest configuration

<shmem name='my_shmem1'>

<model type='ivshmem-plain'/>

<size unit='M'>4</size>

</shmem>



2) virsh start guest-1



3) virsh migrate --live guest-1 qemu+ssh://target/system



Actual results:

error: Requested operation is not valid: migration with shmem device is not supported



4.Code Review

When using the command “virsh create guset-1.xml,it produce corresponding command below.

“qemu-kvm -device ivshmem-plain, id=shmem0,memdev=shmmem-shmem0,bus=pci.0,addr=0xa”



I read qemu-doc.texi in qemu-2.8.1 source code, which have a explain of migrating ivshmem below

“With device property @option{master=on}, the guest will copy the shared

memory on migration to the destination host. With @option{master=off},

the guest will not be able to migrate with the device attached.”



But libvirt library can not recognize the property “master=on”. When I directly used command "qemu-kvm -device ivshmem-plain,id=shmem0,memdev=shmmem-shmem0,master=on,bus=pci.0,addr=0xa” to launch a guest, it can migrate in live.



I review the code about qemu code with branch 2.8.1 and master from https://github.com/libvirt/libvirt, it have no configuration definition for “master=on”

The below is the part of source code



domain_conf.h

struct _virDomainShmemDef {

char *name;

unsigned long long size;

int model; /* enum virDomainShmemModel */

struct {

bool enabled;

virDomainChrSourceDef chr;

} server;

struct {

bool enabled;

unsigned vectors;

virTristateSwitch ioeventfd;

} msi;

virDomainDeviceInfo info;

};

Loading...