[libvirt-users] [virtual interface] detach interface during boot succeed with no changes

Yalan Zhang yalzhang at redhat.com
Thu Sep 8 08:51:03 UTC 2022


Hi Peter,

Thank you for pointing that out, I will track the issue on that bug instead.

Yalan


On Thu, Sep 8, 2022 at 3:58 PM Peter Krempa <pkrempa at redhat.com> wrote:

> On Thu, Sep 08, 2022 at 15:16:56 +0800, Yalan Zhang wrote:
> > Hi Laine,
> >
> > As for the hot-unplug behavior, I have one more question about it, could
> > you please help to confirm?
> >
> > unplugging a PCI device properly requires cooperation from the guest OS.
> > > If the guest OS isn't running yet, the unplug won't complete, so qemu
> > > (and libvirt) still show the device as plugged into the guest.
> > >
> > > virsh reports success on the unplug because unplugging a device is done
> > > asynchronously - the "success" means "libvirt successfully told qemu to
> > > unplug the device, qemu has told the virtual machine to unplug the
> > > device, and is waiting for acknowledgment from the virtual machine that
> > > the guest has completed removal". At some later time the guest OS may
> > > complete its part of the unplug; when that happens, qemu will get a
> > > notification and will send an event to libvirt - at that time the
> device
> > > will be removed from libvirt's list of devices.
> > >
> > > tl;dr - this is all expected.
> > >
> >
> > The question is that, when I unplug it during boot, the virsh cmd will
> > succeed but the interface still exists, which is expected.
> > After the vm boot successfully, the guest OS will *not* complete this
> > removal. When I tried to detach it again, it reported that the device was
> > in the process of unplugging.
> > Is this acceptable?
> >
> > # virsh detach-interface rhel_new network 52:54:00:36:a8:d4
> > Interface detached successfully
> > # virsh domiflist rhel_new
> >  Interface   Type      Source    Model    MAC
> > -------------------------------------------------------------
> >  vnet4       network   default   virtio   52:54:00:36:a8:d4
> >
> > # virsh detach-interface rhel_new network 52:54:00:36:a8:d4
> > error: Failed to detach interface
> > error: internal error: unable to execute QEMU command 'device_del':
> Device
> > net0 is already in the process of unplug
>
> The same problem was already reported for disks:
>
> https://bugzilla.redhat.com/show_bug.cgi?id=2087047
>
> https://gitlab.com/libvirt/libvirt/-/issues/309
>
> The main problem is that qemu doesn't re-send the request to unplug the
> device and rather reprots an eroror. At the same time the guest OS
> doesn't notice it any more, so the unplug can't be finished until the VM
> is rebooted.
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvirt-users/attachments/20220908/d4d9955c/attachment.htm>


More information about the libvirt-users mailing list