[pve-devel] [PATCH 2/3] enable virtio-scsi iothread hot-unplug for qemu 2.7 v3

Alexandre DERUMIER aderumier at odiso.com
Mon Oct 17 13:55:55 CEST 2016


Ok, 
I have done more tests again, and It seem that I can trigger the bug.

Sometimes the virtio-scsi controller can't be unplug after some plug|unplug.

I can't reproduce 100%, sometimes it's after 3 hot|unplug, sometimes after 10 hot|unplug.

I have also tried manual "device_del", and the controller is stuck.


So, better to disable it for now. (I'll try to contact qemu devs to see where is the problem)

----- Mail original -----
De: "aderumier" <aderumier at odiso.com>
À: "Wolfgang Bumiller" <w.bumiller at proxmox.com>
Cc: "pve-devel" <pve-devel at pve.proxmox.com>
Envoyé: Lundi 17 Octobre 2016 13:31:37
Objet: Re: [pve-devel] [PATCH 2/3] enable virtio-scsi iothread hot-unplug for qemu 2.7 v3

>>What kind of setup did you test this with? 

debian jessie, kernel 3.16. 

I have tried to remove/readd multiple time a virtio-scsi disk, no error. 


with qemu 2.6, I had errors when removing then readd same drive. 

I'll do more tests with arch to see if I can reproduce 

----- Mail original ----- 
De: "Wolfgang Bumiller" <w.bumiller at proxmox.com> 
À: "aderumier" <aderumier at odiso.com> 
Cc: "pve-devel" <pve-devel at pve.proxmox.com> 
Envoyé: Lundi 17 Octobre 2016 13:17:45 
Objet: Re: [pve-devel] [PATCH 2/3] enable virtio-scsi iothread hot-unplug for qemu 2.7 v3 

So, when testing this on a linux guest (4.7.6, Arch) I still get errors 
(and see kernel traces in the guest's dmesg) with the iothread flag... 
Removing "works" (it's removed, but the qemu command still errors and 
you get an error in the pve GUI) - re-adding doesn't work (always shows 
me kernel stack traces in dmesg). 

What kind of setup did you test this with? 

On Mon, Oct 17, 2016 at 12:20:44PM +0200, Alexandre Derumier wrote: 
> changelog: check current running qemu process 
> 
> Signed-off-by: Alexandre Derumier <aderumier at odiso.com> 
> --- 
> PVE/QemuServer.pm | 13 +++++++++---- 
> 1 file changed, 9 insertions(+), 4 deletions(-) 
> 
> diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm 
> index 6376323..e4c385f 100644 
> --- a/PVE/QemuServer.pm 
> +++ b/PVE/QemuServer.pm 
> @@ -3516,9 +3516,11 @@ sub vm_deviceunplug { 
> 
> } elsif ($deviceid =~ m/^(scsi)(\d+)$/) { 
> 
> - #qemu 2.3 segfault on drive_del with virtioscsi + iothread 
> - my $device = parse_drive($deviceid, $conf->{$deviceid}); 
> - die "virtioscsi with iothread is not hot-unplugglable currently" if $device->{iothread}; 
> + my $kvmver = get_running_qemu_version($vmid); 
> + if (!qemu_machine_feature_enabled (undef, $kvmver, 2, 7)) { 
> + my $device = parse_drive($deviceid, $conf->{$deviceid}); 
> + die "virtioscsi with iothread is hot-unplugglable since qemu 2.7" if $device->{iothread}; 
> + } 
> 
> qemu_devicedel($vmid, $deviceid); 
> qemu_drivedel($vmid, $deviceid); 
> @@ -3564,7 +3566,10 @@ sub qemu_iothread_add { 
> sub qemu_iothread_del { 
> my($conf, $vmid, $deviceid) = @_; 
> 
> - my $device = parse_drive($deviceid, $conf->{$deviceid}); 
> + my $drive = $deviceid; 
> + $drive =~ s/virtioscsi/scsi/; 
> + my $device = parse_drive($drive, $conf->{$drive}); 
> + 
> if ($device->{iothread}) { 
> my $iothreads = vm_iothreads_list($vmid); 
> qemu_objectdel($vmid, "iothread-$deviceid") if $iothreads->{"iothread-$deviceid"}; 
> -- 
> 2.1.4 
> 
> _______________________________________________ 
> pve-devel mailing list 
> pve-devel at pve.proxmox.com 
> http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel 

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




More information about the pve-devel mailing list