[Spice-devel] [PATCH spice-server v2 00/14] char device flow control v2
Hans de Goede
hdegoede at redhat.com
Tue Jul 3 05:10:11 PDT 2012
Series looks good to me, ack series!
On 07/03/2012 01:33 PM, Yonit Halperin wrote:
> Changes from v1:
> Fixes for the comments Hans and Alon made. Mainly for patch 3:
> * use do_flow_control flag, instead of ~0 for infinite tokens
> * avoid code duplication in spice_char_device_send_to_client_tokens_set/add
> * fix bug in num_self_token counting when the cur_write_buf was associated with
> a client that was destroyed.
> * moved the recursion tracking in read_from_device to the device state, instead of using
> a static variable
> * fix ref counting for the char device state
> * add some asserts
> * removed a routine that wasn't used: spice_char_device_client_num_tokens_get
> This patch series extends SpiceCharDeviceState to manage the character devices flow control:
> wakeup and reading from the device; writing to the device; start/stop the device; server/client tokens
> management, including partial support for multiple clients.
> The agent, spicevmc, and smartcard, were modified to use SpiceCharDeviceState.
> Functional differences from the previous implementation:
> (1) Api for starting and stopping the device: when the device is stopped, incoming messages from the client are kept in the
> server till the device is started (or migrated - not implemented yet).
> (2) vdagent: not ignoring tokens received from the client; generalize token management for multiple clients.
> (3) smartcard, spicevmc:
> (a) support partial writes; while this might not be necessary for usbredir, it may be required for future devices.
> (b) smartcard and spicevmc channels can be easily extended to support tokening.
> The patches serve also as a preliminary work for supporting seamless migration by:
> (1) having start/stop api: we need to stop writing to the guest when savevm starts
> (2) having write queues for all character devices and not just the agent:
> we need to save data that reached the server after the guest was stopped.
> (3) having tokens support: in addition to the ongoing flow control it provides,
> it also allows us to set an upper limit to the amount of data we might need to migrate.
> The series also contain some bug fixes.
> Yonit Halperin (14):
> smartcard: fix calc of remaining data size when reading more than one
> msg from the device
> smartcard: fix an error message
> char_device: Introducing shared flow control code for char devices.
> agent: Fix tokens handling in main_channel
> agent: remove save/restore migration data code
> agent: employ SpiceCharDeviceState for managing reading from the
> agent: use SpiceCharDeviceWriteBuffer for agent data from the client
> agent: employ SpiceCharDeviceState for writing to the device
> spicevmc: employ SpiceCharDeviceState for managing reading from the
> guest device
> spicevmc: use SpiceCharDeviceState for writing to the guest device
> smartcard: use SpiceCharDeviceState for managing reading from the
> smartcard: creating SmartCardChannelClient type
> smartcard: use SpiceCharDeviceState for writing to the guest device
> char_device: move SpiceCharDeviceState from the header
> server/Makefile.am | 1 +
> server/char_device.c | 775 +++++++++++++++++++++++++++++++++++++++++++++
> server/char_device.h | 183 +++++++++++-
> server/main_channel.c | 94 +++----
> server/main_channel.h | 6 +-
> server/reds.c | 842 ++++++++++++++++++-------------------------------
> server/reds.h | 5 +-
> server/smartcard.c | 367 ++++++++++++++++------
> server/smartcard.h | 6 +-
> server/spicevmc.c | 193 ++++++++----
> 10 files changed, 1713 insertions(+), 759 deletions(-)
> create mode 100644 server/char_device.c
More information about the Spice-devel