Bug 1328898

Summary: Ship FD connection patches
Product: Red Hat Enterprise Linux 7 Reporter: Zeeshan Ali <zeenix>
Component: spice-gtkAssignee: Default Assignee for SPICE Bugs <rh-spice-bugs>
Status: CLOSED ERRATA QA Contact: SPICE QE bug list <spice-qe-bugs>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.2CC: cfergeau, djasa, mclasen, pgrunt, rbalakri, tpelka, vbenes, victortoso
Target Milestone: rcKeywords: Reopened
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: spice-gtk-0.31-2.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 1336491 (view as bug list) Environment:
Last Closed: 2016-11-04 01:17:44 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On: 1329973    
Bug Blocks: 1043950, 1336491    
Attachments:
Description Flags
server & client logs none

Description Zeeshan Ali 2016-04-20 14:04:49 UTC
AFAICT the version of spice-gtk in RHEL 7.2 and 7.3 does not ship unix connection feature and hence I can not resolve bug#1043950 in Boxes alone. Kindly include those patches.

Comment 2 Christophe Fergeau 2016-04-20 15:19:19 UTC
Reading that bug, it seems what you need is
https://bugzilla.redhat.com/show_bug.cgi?id=1043950#c10

« unfortunately the changes reveal a bug in spice-gtk that completely breaks usb-redirection. The fix is in spice-gtk git master for a while now though so its about releasing and backporting from their side. I guess I can open a bug on spice-gtk for that after backporting gnome-boxes patches for this issue.. »

Bit different from "Unix connection patches"... It would make the backporting much easier if you could point out exactly which fix this is ;)

Comment 3 Zeeshan Ali 2016-04-21 11:35:12 UTC
(In reply to Christophe Fergeau from comment #2)
> Reading that bug, it seems what you need is
> https://bugzilla.redhat.com/show_bug.cgi?id=1043950#c10
> 
> « unfortunately the changes reveal a bug in spice-gtk that completely breaks
> usb-redirection. The fix is in spice-gtk git master for a while now though
> so its about releasing and backporting from their side. I guess I can open a
> bug on spice-gtk for that after backporting gnome-boxes patches for this
> issue.. »
> 
> Bit different from "Unix connection patches"... It would make the
> backporting much easier if you could point out exactly which fix this is ;)

I meant FD connection patches. i-e the patches that enable me to do this in Boxes:

https://git.gnome.org/browse/gnome-boxes/commit/?id=fb04e17a7dac24ecb14b2b0d252f025841cef075

and patches (I'm not sure which exactly but I can try to find them out for you if you need me to) in spice-gtk that fixes the breakage of usb redirection after FD connection was introduced.

Comment 4 Christophe Fergeau 2016-04-21 12:22:35 UTC
(In reply to Zeeshan Ali from comment #3)

> I meant FD connection patches. i-e the patches that enable me to do this in
> Boxes:
> 
> https://git.gnome.org/browse/gnome-boxes/commit/
> ?id=fb04e17a7dac24ecb14b2b0d252f025841cef075
> 

I believe the needed API has been there since spice-gtk 0.3, RHEL has spice-gtk 0.22, so this should be plenty fine.

> and patches (I'm not sure which exactly but I can try to find them out for
> you if you need me to) in spice-gtk that fixes the breakage of usb
> redirection after FD connection was introduced.

I believe these are http://pkgs.fedoraproject.org/cgit/rpms/spice-gtk.git/commit/?id=5c1f6db

Comment 5 Zeeshan Ali 2016-04-21 16:26:10 UTC
(In reply to Christophe Fergeau from comment #4)
> (In reply to Zeeshan Ali from comment #3)
> 
> > I meant FD connection patches. i-e the patches that enable me to do this in
> > Boxes:
> > 
> > https://git.gnome.org/browse/gnome-boxes/commit/
> > ?id=fb04e17a7dac24ecb14b2b0d252f025841cef075
> > 
> 
> I believe the needed API has been there since spice-gtk 0.3, RHEL has
> spice-gtk 0.22, so this should be plenty fine.

Cool.

> > and patches (I'm not sure which exactly but I can try to find them out for
> > you if you need me to) in spice-gtk that fixes the breakage of usb
> > redirection after FD connection was introduced.
> 
> I believe these are
> http://pkgs.fedoraproject.org/cgit/rpms/spice-gtk.git/commit/?id=5c1f6db

Yeah, I think so. Are they also already incluced in 7.2?

Comment 6 Zeeshan Ali 2016-04-21 19:42:42 UTC
(In reply to Zeeshan Ali from comment #5)
> (In reply to Christophe Fergeau from comment #4)
> > (In reply to Zeeshan Ali from comment #3)
> > 
> > > I meant FD connection patches. i-e the patches that enable me to do this in
> > > Boxes:
> > > 
> > > https://git.gnome.org/browse/gnome-boxes/commit/
> > > ?id=fb04e17a7dac24ecb14b2b0d252f025841cef075
> > > 
> > 
> > I believe the needed API has been there since spice-gtk 0.3, RHEL has
> > spice-gtk 0.22, so this should be plenty fine.
> 
> Cool.
> 
> > > and patches (I'm not sure which exactly but I can try to find them out for
> > > you if you need me to) in spice-gtk that fixes the breakage of usb
> > > redirection after FD connection was introduced.
> > 
> > I believe these are
> > http://pkgs.fedoraproject.org/cgit/rpms/spice-gtk.git/commit/?id=5c1f6db
> 
> Yeah, I think so. Are they also already incluced in 7.2?

I cloned RHEL spice-gtk repo and found the answer: They are not yet applied (to either 7.2 or 7.3). So I guess this bug is going to be able including these patches.

Comment 7 Zeeshan Ali 2016-04-21 19:43:18 UTC
(In reply to Zeeshan Ali from comment #6)
...
> I cloned RHEL spice-gtk repo and found the answer: They are not yet applied
> (to either 7.2 or 7.3). So I guess this bug is going to be able including
> these patches.

able -> about. :)

Comment 8 Pavel Grunt 2016-04-22 07:08:05 UTC
Zeeshan, so this bug is not about shipping FD connection patches but about fixing the usb redirection problem in Boxes ?

It would be easier if you explain the problem (it seems there is no problem (yet)). I really don't know what is needed to be backported and why.
Thanks

Comment 9 Christophe Fergeau 2016-04-22 08:33:05 UTC
To avoid letting any local user connect to any running Boxes VMs (even ones from other users), Boxes wants to use virDomainOpenGraphicsFD rather than connecting to an IP/port. When this was done upstream, this exhibited a few bugs (audio/usb) in spice-gtk, which were fixed around spice-gtk 0.28 (forgot if this was before or after that release). That fedora git link has the 2 patches which were added to the fedora package in order to fix these bugs (I think).

Comment 10 Zeeshan Ali 2016-04-22 12:02:40 UTC
(In reply to Pavel Grunt from comment #8)
> Zeeshan, so this bug is not about shipping FD connection patches but about
> fixing the usb redirection problem in Boxes ?
> 
> It would be easier if you explain the problem (it seems there is no problem
> (yet)). I really don't know what is needed to be backported and why.

It was originally filed to ensure that spice-gtk ships the FD connection patches and fixes to regressions caused by this new feature, are shipped in RHEL. I was later informed by Christophe that FD connection patches have already been shipped but not the fixes to regressions caused by these patches, so now it's about those patches. I hope that clarifies all your questions.

Comment 11 Zeeshan Ali 2016-04-26 17:17:42 UTC
Shouldn't this just be a dup of #1329973, assuming gets all acks?

Comment 12 Matthias Clasen 2016-05-02 16:14:57 UTC
with 1329973 ON_QA, is this bug fixed ?

Comment 13 Pavel Grunt 2016-05-02 20:30:58 UTC
FD connection patches are shipped, closing

Comment 15 Zeeshan Ali 2016-05-11 13:17:38 UTC
Hmm.. some patches might be missing cause all Boxes tests broke with latest Boxes and libvirt-glib builds. According to vbenes, the issue is that you can't connect to newly created VMs. Looking at the sample XML, I see that Boxes isn't (expectedly) setting port or listening address on spice:

    <graphics type='spice' autoport='no'>
      <image compression='off'/>
    </graphics>

He also verified this is with spice-gtk-0.31-2.el7.

Comment 16 Christophe Fergeau 2016-05-11 13:23:45 UTC
logs please.. And test virt-viewer -a too.

Comment 17 Victor Toso 2016-05-11 13:34:44 UTC
Zeeshan,

Please open a new bug to investigate new issues, with all info/help you can provide to track the problem (Comment #16)

Comment 18 Zeeshan Ali 2016-05-11 16:10:54 UTC
(In reply to Christophe Fergeau from comment #16)
> logs please.. And test virt-viewer -a too.

Yeah, vbenes has the setup so I'll ask him to test and provide details.(In reply to Victor Toso from comment #17)

> Zeeshan,
> 
> Please open a new bug to investigate new issues, with all info/help you can
> provide to track the problem (Comment #16)

I'll first want to check if it's not this bug itself. :) It could also be that I forgot some patches on Boxes side.

Comment 19 Vladimir Benes 2016-05-12 13:36:58 UTC
even virt-manager is not working  

error looks like this:
Error starting domain: internal error: process exited while connecting to monitor: utdown -global PIIX4_PM.disable_s3=1 -global PIIX4_PM.disable_s4=1 -boot menu=off,strict=on -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x6.0x7 -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x6 -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x6.0x1 -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x6.0x2 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5 -device usb-ccid,id=ccid0 -drive file=/home/vbenes/.local/share/gnome-boxes/images/fed23.qcow2,format=qcow2,if=none,id=drive-virtio-disk0,aio=native -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x7,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -netdev tap,fd=25,id=hostnet0 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:41:09:16,bus=pci.0,addr=0x3 -chardev spicevmc,id=charsmartcard0,name=smartcard -device ccid-card-passthru,chardev=charsmartcard0,id=smartcard0,bus=ccid0.0 -chardev pty,id=charserial0 -device i

Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 90, in cb_wrapper
    callback(asyncjob, *args, **kwargs)
  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 126, in tmpcb
    callback(*args, **kwargs)
  File "/usr/share/virt-manager/virtManager/libvirtobject.py", line 83, in newfn
    ret = fn(self, *args, **kwargs)
  File "/usr/share/virt-manager/virtManager/domain.py", line 1402, in startup
    self._backend.create()
  File "/usr/lib64/python2.7/site-packages/libvirt.py", line 1035, in create
    if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)
libvirtError: internal error: process exited while connecting to monitor: utdown -global PIIX4_PM.disable_s3=1 -global PIIX4_PM.disable_s4=1 -boot menu=off,strict=on -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x6.0x7 -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x6 -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x6.0x1 -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x6.0x2 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5 -device usb-ccid,id=ccid0 -drive file=/home/vbenes/.local/share/gnome-boxes/images/fed23.qcow2,format=qcow2,if=none,id=drive-virtio-disk0,aio=native -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x7,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -netdev tap,fd=25,id=hostnet0 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:41:09:16,bus=pci.0,addr=0x3 -chardev spicevmc,id=charsmartcard0,name=smartcard -device ccid-card-passthru,chardev=charsmartcard0,id=smartcard0,bus=ccid0.0 -chardev pty,id=charserial0 -device i

Comment 20 Christophe Fergeau 2016-05-12 13:41:59 UTC
Please attach libvirt logs. And try with 'virsh -c qemu:///session start xxx' and 'virt-viewer -a xxx'.

Comment 21 David Jaša 2016-05-12 14:33:18 UTC
@vbenes - you can paste your log right away, it's in ${HOME}/.cache/libvirt/qemu/log/${VM_NAME}.log

Comment 22 David Jaša 2016-05-12 15:59:00 UTC
Created attachment 1156724 [details]
server & client logs

Well, connection over fd works for me - I used existing domain in user session, cleared it's element entirely to just <graphics type='spice' autoport='no'/> and then I managed to connect when virt-viewer told me about --attach option. Log snippets for spice-server and virt-viewer are in the attachment. Boxes also work for me.

Note the EGL messages and getsockopt failures in client log and lack of TCP sockets in info spice output - both indicating that communication goes over unix socket:

$ virsh qemu-monitor-command --hmp fedora info spice
Server:
    migrated: false
        auth: none
    compiled: 0.12.4
  mouse-mode: client
Channels: none


$


The versions involved are (all current 7.3 + qemu from RHEV 3.6):
spice-gtk3-0.31-2.el7.x86_64
virt-viewer-2.0-7.el7.x86_64
gnome-boxes-3.14.3.1-8.el7.x86_64
spice-server-0.12.4-17.el7.x86_64
qemu-kvm-rhev-2.3.0-31.el7_2.13.x86_64
libvirt-daemon-1.3.4-1.el7.x86_64

Comment 23 David Jaša 2016-05-12 16:00:06 UTC
Based on comment 22, I believe we can mark this as VERIFIED.

Comment 24 David Jaša 2016-05-12 16:27:52 UTC
@zeeshan/@vbenes - your problem is something else than inclusion of patches in spice-gtk + libvirt + spice-server

@vbenes - your VM isn't starting at all and virt-manager isn't exactly helpful in telling what's going on (bug 1335617). Let's focus on qemu log in the new bug.

Comment 25 Pavel Grunt 2016-05-16 08:20:46 UTC
(In reply to David Jaša from comment #23)
> Based on comment 22, I believe we can mark this as VERIFIED.

Yes, thanks! All requested patches are in and the connection works (per comment 22).

Comment 26 David Jaša 2016-05-16 15:15:22 UTC
The difference between me and Vladimír is that I'm using RHEV build of qemu 2.3 while Vlad uses stock RHEL qemu 1.5 that doesn't recognize -spice invocation without port port tls-port specification:

2016-05-16 15:09:14.071+0000: starting up libvirt version: 1.3.4, package: 1.el7 (Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>, 2016-05-03-05:10:55, x86-020.build.eng.bos.redhat.com), qemu version: 1.5.3 (qemu-kvm-1.5.3-111.el7), (...)
(...) /usr/libexec/qemu-kvm (...) -spice disable-ticketing,seamless-migration=on (...)
2016-05-16T15:09:14.112955Z qemu-kvm: neither port nor tls-port specified for spice

So @Zeeshan, please open a new bug against qemu (and probably CC Marc-André and/or Gerd). Spice-gtk, spice-server and qemu-kvm-rhev do have patches included, qemu-kvm does not.

Comment 30 errata-xmlrpc 2016-11-04 01:17:44 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2016-2229.html