[libvirt] [PATCH v2] send default USB controller in xml to destination during migration

Ján Tomko jtomko at redhat.com
Mon May 2 14:41:53 UTC 2016


On Fri, Apr 29, 2016 at 01:09:26PM -0400, Cole Robinson wrote:
> On 04/29/2016 10:01 AM, Shivaprasad G Bhat wrote:
> > The default USB controller is not sent to destination as the older versions
> > of libvirt(0.9.4 or earlier as I see in commit log of 409b5f54) didn't
> > support them. For some archs where the support started much later can
> > safely send the USB controllers without this worry. So, send the controller
> > to destination for all archs except x86. Moreover this is not very applicable
> > to x86 as the USB controller has model ich9_ehci1 on q35 and for pc-i440fx,
> > there cant be any slots before USB as it is fixed on slot 1.
> > 
> > The patch fixes a bug that, if the USB controller happens to occupy
> > a slot after disks/interfaces and one of them is hot-unplugged, then
> > the default USB controller added on destination takes the smallest slot
> > number and that would lead to savestate mismatch and migration
> > failure. Seen and verified on PPC64.
> > 
> > Signed-off-by: Shivaprasad G Bhat <sbhat at linux.vnet.ibm.com>
> > ---
> >  src/qemu/qemu_domain.c |    6 +++++-
> >  1 file changed, 5 insertions(+), 1 deletion(-)
> > 
> > diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> > index 6262bfe..963ff35 100644
> > --- a/src/qemu/qemu_domain.c
> > +++ b/src/qemu/qemu_domain.c
> > @@ -2599,7 +2599,11 @@ qemuDomainDefFormatBuf(virQEMUDriverPtr driver,
> >                  usb = def->controllers[i];
> >              }
> >          }
> > -        if (usb && usb->idx == 0 && usb->model == -1) {
> > +        /*  The original purpose of the check was the migration compatibility
> > +         *  with libvirt <= 0.9.4. Limitation doesn't apply to other archs
> > +         *  and can cause problems on PPC64.
> > +         *
> > +        if (ARCH_IS_X86(def->os.arch) && usb && usb->idx == 0 && usb->model == -1) {

As of commit fcbfd50:
    qemu: only check for PIIX3-specific device addrs on pc-* machinetypes
we only check that the controller is on slot 1 for PIIX3 machines,
so qemuDomainMachineIsI440FX(def) should also be one of the conditions.

It is possible to specify a usb controller with model='-1' on q35 too,
but I do not know if anyone actually uses it in the wild.

Jan

> >              VIR_DEBUG("Removing default USB controller from domain '%s'"
> >                        " for migration compatibility", def->name);
> >              toremove++;
> > 
> 
> ACK, but I'll push next week after the release is out.
> 
> Thanks,
> Cole
> 
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list




More information about the libvir-list mailing list