[libvirt] [PATCH v2] qemu: Prevent detaching SCSI controller used by hostdev
John Ferlan
jferlan at redhat.com
Wed Nov 30 22:23:38 UTC 2016
On 11/29/2016 04:40 PM, Eric Farman wrote:
> Consider the following XML snippets:
>
> $ cat scsicontroller.xml
> <controller type='scsi' model='virtio-scsi' index='0'/>
> $ cat scsihostdev.xml
> <hostdev mode='subsystem' type='scsi'>
> <source>
> <adapter name='scsi_host0'/>
> <address bus='0' target='8' unit='1074151456'/>
> </source>
> </hostdev>
>
> If we create a guest that includes the contents of scsihostdev.xml,
> but forget the virtio-scsi controller described in scsicontroller.xml,
> one is silently created for us. The same holds true when attaching
> a hostdev before the matching virtio-scsi controller.
> (See qemuDomainFindOrCreateSCSIDiskController for context.)
>
> Detaching the hostdev, followed by the controller, works well and the
> guest behaves appropriately.
>
> If we detach the virtio-scsi controller device first, any associated
> hostdevs are detached for us by the underlying virtio-scsi code (this
> is fine, since the connection is broken). But all is not well, as the
> guest is unable to receive new virtio-scsi devices (the attach commands
> succeed, but devices never appear within the guest), nor even be
> shutdown, after this point.
>
> While this is not libvirt's problem, we can prevent falling into this
> scenario by checking if a controller is being used by any hostdev
> devices. The same is already done for disk elements today.
>
> Applying this patch and then using the XML snippets from earlier:
>
> $ virsh detach-device guest_01 scsicontroller.xml
> error: Failed to detach device from scsicontroller.xml
> error: operation failed: device cannot be detached: device is busy
>
> $ virsh detach-device guest_01 scsihostdev.xml
> Device detached successfully
>
> $ virsh detach-device guest_01 scsicontroller.xml
> Device detached successfully
>
> Signed-off-by: Eric Farman <farman at linux.vnet.ibm.com>
> Reviewed-by: Bjoern Walk <bwalk at linux.vnet.ibm.com>
> Reviewed-by: Boris Fiuczynski <fiuczy at linux.vnet.ibm.com>
> ---
> src/qemu/qemu_hotplug.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
ACK, safe, and pushed.
Thanks,
John
More information about the libvir-list
mailing list