applied

On Mon, Jul 04, 2016 at 03:24:20PM +0200, Dominik Csapak wrote:
> we have a few problems with hotplug at the moment:
> qemu may add usb hubs when adding usb devices but fails to remove them
> when removing the usb device (this is a qemu bug)
> 
> also when starting a guest with a usb device we add ehci and uchi
> controllers, which we cannot hot unplug
> 
> with those devices, it is impossible to live migrate the guest
> to another host, meaning even if you remove all usb devices,
> the migrate fails
> 
> so we deactivate usb hotplugging for now
> 
> Signed-off-by: Dominik Csapak <d.csa...@proxmox.com>
> ---
> changes from v1:
>  * used an coherent way of disabling the usb hotplug codepaths
>  PVE/QemuServer.pm | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
> 
> diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
> index b6ad27a..da26efe 100644
> --- a/PVE/QemuServer.pm
> +++ b/PVE/QemuServer.pm
> @@ -3273,6 +3273,10 @@ sub vm_deviceplug {
>  
>      } elsif ($deviceid =~ m/^usb(\d+)$/) {
>  
> +     die "usb hotplug currently not reliable\n";
> +     # since we can't reliably hot unplug all added usb devices
> +     # and usb passthrough disables live migration
> +     # we disable usb hotplugging for now 
>       qemu_deviceadd($vmid, PVE::QemuServer::USB::print_usbdevice_full($conf, 
> $deviceid, $device));
>  
>      } elsif ($deviceid =~ m/^(virtio)(\d+)$/) {
> @@ -3372,6 +3376,10 @@ sub vm_deviceunplug {
>  
>      } elsif ($deviceid =~ m/^usb\d+$/) {
>  
> +     die "usb hotplug currently not reliable\n";
> +     # when unplugging usb devices this way, 
> +     # there may be remaining usb controllers/hubs
> +     # so we disable it for now
>       qemu_devicedel($vmid, $deviceid);
>       qemu_devicedelverify($vmid, $deviceid);
>  
> @@ -3910,6 +3918,9 @@ sub vmconfig_hotplug_pending {
>                   vm_deviceunplug($vmid, $conf, $opt);
>               }
>           } elsif ($opt =~ m/^usb\d+/) {
> +             die "skip\n";
> +             # since we cannot reliably hot unplug usb devices
> +             # we are disabling it
>               die "skip\n" if !$hotplug_features->{usb} || $conf->{$opt} =~ 
> m/spice/i;
>               vm_deviceunplug($vmid, $conf, $opt);
>           } elsif ($opt eq 'vcpus') {
> @@ -3963,6 +3974,9 @@ sub vmconfig_hotplug_pending {
>                   vm_deviceunplug($vmid, $conf, $opt);
>               }
>           } elsif ($opt =~ m/^usb\d+$/) {
> +             die "skip\n";
> +             # since we cannot reliably hot unplug usb devices
> +             # we are disabling it
>               die "skip\n" if !$hotplug_features->{usb} || $value =~ 
> m/spice/i;
>               my $d = eval { 
> PVE::JSONSchema::parse_property_string($usbdesc->{format}, $value) };
>               die "skip\n" if !$d;
> -- 
> 2.1.4
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel@pve.proxmox.com
> http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
> 

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to