Call read_from_vdi_port() from vdi_read_buf_release()
Call read_from_vdi_port() from vdi_read_buf_release()

read_from_vdi_port(), called from vdagent_char_device_wakeup() may
fail to consume all data because no buffers are available in the
read_bufs ring. When this happens we would fail to ever read more data
from the agent on the guest as the port is throttled and stays throttled
until we've consumed all data from the current buffer.

This patch re-enables the call to read_from_vdi_port() from
vdi_read_buf_release(), so that we will try the read again when space
becomes available in the read_bufs ring.

Together with another nasty hack in the linux guest virtio_console
driver, where it waits for a write to be acked by the host before
continuing with the next one, this can lead to a linux guest
getting stuck / hang (until the write is read by the spice-server
which never happens becaus of the above issues).

Note that even with this patch, the guest will still gets stuck due to
a bug in watch_update_mask in spice-core in qemu, which causes writing
to the client to never resume once it blocked. A patch for this has been
submitted to qemu.

dezelin/spice,alon/spice-server,elmarco/spice,mathslinux/spice,virtualAMP/spiceplay,SPICE/spice,dezelin/spice,freedesktop-unofficial-mirror/spice__spice,ya-mouse/spice,alon/spice-server,Fantu/spice,fgouget/spice,elmarco/spice,mathslinux/spice,virtualAMP/spiceplay,mathslinux/spice,freedesktop-unofficial-mirror/spice__spice,dezelin/spice,freedesktop-unofficial-mirror/spice__spice,Fantu/spice,SPICE/spice,Fantu/spice,fgouget/spice,dezelin/spice,mathslinux/spice,mathslinux/spice,elmarco/spice,alon/spice-server,fgouget/spice,freedesktop-unofficial-mirror/spice__spice,Fantu/spice,ya-mouse/spice,virtualAMP/spiceplay,SPICE/spice,elmarco/spice,freedesktop-unofficial-mirror/spice__spice,fgouget/spice,elmarco/spice,alon/spice-server,ya-mouse/spice,alon/spice-server,dezelin/spice,virtualAMP/spiceplay