[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