Redirect USB device ve virt-manageru nefunguje

Ve fedora 33 mám virtuálku (třeba s CentOS 7, ale i jiné). Připojím USB flash disk. Ve fedoře normálně připojím a přečtu z ní data.

$ lsblk -f |grep sdb
sdb                                                                                                                       
└─sdb1                                        vfat        FAT32       5258-0254                               7.2G     3% /run/media/jmlich/5258-0254
$ sudo blkid -p /dev/sdb 
/dev/sdb: PTUUID="a4e477db" PTTYPE="dos"

Ve virtuálce po připojení pomocí “Redirect USB device” se to chová tak, že lsblk -f nezobrazuje typ souborového systému. Blkid se zasekne na pár vteřin.

-bash-4.2# lsblk -f|grep sdb
sdb                                                                   
└─sdb1                                                                
-bash-4.2# blkid -p /dev/sdb
error: /dev/sdb: No medium found

V logu je vidět následující:

Apr 27 13:00:46 localhost kernel: usb 1-3: new high-speed USB device number 6 using xhci_hcd
Apr 27 13:00:46 localhost kernel: usb 1-3: New USB device found, idVendor=058f, idProduct=6387
Apr 27 13:00:46 localhost kernel: usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Apr 27 13:00:46 localhost kernel: usb 1-3: Product: Mass Storage
Apr 27 13:00:46 localhost kernel: usb 1-3: Manufacturer: Generic
Apr 27 13:00:46 localhost kernel: usb 1-3: SerialNumber: 19042308004320
Apr 27 13:00:46 localhost kernel: usb-storage 1-3:1.0: USB Mass Storage device detected
Apr 27 13:00:46 localhost kernel: scsi host9: usb-storage 1-3:1.0
Apr 27 13:00:47 localhost kernel: scsi 9:0:0:0: Direct-Access     Generic  Flash Disk       8.07 PQ: 0 ANSI: 4
Apr 27 13:00:47 localhost kernel: sd 9:0:0:0: Attached scsi generic sg2 type 0
Apr 27 13:00:47 localhost kernel: sd 9:0:0:0: [sdb] 15482880 512-byte logical blocks: (7.92 GB/7.38 GiB)
Apr 27 13:00:47 localhost kernel: sd 9:0:0:0: [sdb] Write Protect is off
Apr 27 13:00:47 localhost kernel: sd 9:0:0:0: [sdb] Mode Sense: 23 00 00 00
Apr 27 13:00:47 localhost kernel: sd 9:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
Apr 27 13:00:47 localhost kernel:  sdb: sdb1
Apr 27 13:00:47 localhost kernel: sd 9:0:0:0: [sdb] Attached SCSI removable disk
Apr 27 13:01:18 localhost kernel: usb 1-3: reset high-speed USB device number 6 using xhci_hcd
Apr 27 13:01:47 localhost systemd-udevd[1929]: worker [6574] /devices/pci0000:00/0000:00:02.2/0000:03:00.0/usb1/1-3/1-3:1.0/host9/target9:0:0/9:0:0:0/block/sdb is taking a long time
Apr 27 13:01:49 localhost kernel: usb 1-3: reset high-speed USB device number 6 using xhci_hcd
Apr 27 13:01:59 localhost kernel: usb 1-3: reset high-speed USB device number 6 using xhci_hcd
Apr 27 13:02:16 localhost kernel: usb 1-3: reset high-speed USB device number 6 using xhci_hcd
Apr 27 13:02:16 localhost kernel: usb 1-3: reset high-speed USB device number 6 using xhci_hcd
Apr 27 13:02:27 localhost kernel: usb 1-3: reset high-speed USB device number 6 using xhci_hcd
Apr 27 13:02:27 localhost kernel: sd 9:0:0:0: Device offlined - not ready after error recovery
Apr 27 13:02:27 localhost kernel: sd 9:0:0:0: [sdb] FAILED Result: hostbyte=DID_ABORT driverbyte=DRIVER_OK
Apr 27 13:02:27 localhost kernel: sd 9:0:0:0: [sdb] CDB: Read(10) 28 00 00 00 00 80 00 00 90 00
Apr 27 13:02:27 localhost kernel: blk_update_request: I/O error, dev sdb, sector 128
Apr 27 13:02:27 localhost kernel: sd 9:0:0:0: rejecting I/O to offline device
Apr 27 13:02:27 localhost kernel: sd 9:0:0:0: killing request
Apr 27 13:02:27 localhost kernel: sd 9:0:0:0: rejecting I/O to offline device
Apr 27 13:02:27 localhost kernel: sd 9:0:0:0: rejecting I/O to offline device

Ostatní virtuálky (zkoušel jsem třeba manjaro) se chovají podobně.
Nezáleží na tom jestli je nainstalovaný SCSI řadič, bootuje se přes BIOS nebo UEFI. Naposledy jsem to nastavoval, aby fstrim zmenšil QCOW (tedy přidat SCSI řadič a přepnout disk na SCSI), ale to na první pohled nemá vliv.
Přepnutí USB2/USB3 na usb řadiči taky nemá vliv.
Na hostiteli se v logu periodicky objevuje nasledujici:

Apr 27 13:34:08 jmlich-dell kernel: usb 1-1: reset high-speed USB device number 22 using xhci_hcd

V logu libvirtu je nasledujici:

2021-04-27T11:25:34.946993Z qemu-system-x86_64: warning: no device attached to queue
2021-04-27T11:25:46.766066Z qemu-system-x86_64: usbredirparser: bulk transfer length exceeds limits 73728 > 65536
2021-04-27T11:25:46.766153Z qemu-system-x86_64: usbredirparser: error usbredirparser_send_* call invalid params, please report!!

S největší pravděpodobností je to nějaké nastavení co jsem udělal, protože mi to před tím fungovalo bez problému. Moc netuším kam bych se měl ještě podívat nebo jak změnit nastavení. Poradí někdo?

To vypadá jako špatná adresa/ovladač přidělená zařízení. Mrkni se, co máš v XML s nastaveními pro danou virtuální mašinu. Můžeš si to prohlédnout např. takto.

V nastaveni USB Redirectoru je nasledujici:

<redirdev bus="usb" type="spicevmc">
  <alias name="redir0"/>
  <address type="usb" bus="0" port="2"/>
</redirdev>

V nastaveni USB řadiče je:

<controller type="usb" index="0" model="ich9-ehci1">
  <alias name="usb"/>
  <address type="pci" domain="0x0000" bus="0x00" slot="0x1d" function="0x7"/>
</controller>

Popravdě moc netuším co bych tam měl nastavit jinak.
BTW aktualizace na Fedoru 34 nepomohla.

Ještě by to teoreticky mohla být tady tato regrese.

bulk transfer length exceeds limits 73728 > 65536

takze je to to co pise Sesivany… ciste teoreticky bys mohl nastavit velikost bulk transferu pro dane zarizeni (proto to napr. sdb najde ale dalsi info uz ne protoze nektere “kanaly” USB mohou byt kratsi).

Diky. Zda se, ze je to presne tento problem.

Je k tomu nejaky ticket v RH bugzille? Rad pripadne otestuju balicek z updates-testing.