summaryrefslogtreecommitdiffstats
path: root/server/zlib_encoder.c
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2010-10-15 09:16:49 +0200
committerHans de Goede <hdegoede@redhat.com>2010-10-15 10:22:37 +0200
commit0b2336cd9c556cec98457e16e09e6c9855d81e82 (patch)
treed7f9cfa65143c79fcf34e0dbe675a84ca0927404 /server/zlib_encoder.c
parenta52324525d5707365c4b6758e5d5b08f21b0ac31 (diff)
downloadspice-0b2336cd9c556cec98457e16e09e6c9855d81e82.tar.gz
spice-0b2336cd9c556cec98457e16e09e6c9855d81e82.tar.xz
spice-0b2336cd9c556cec98457e16e09e6c9855d81e82.zip
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.
Diffstat (limited to 'server/zlib_encoder.c')
0 files changed, 0 insertions, 0 deletions