Re: [PATCH spice-server 2/3] spicevmc: Do not use RedCharDevice pipe items handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 6/1/19 3:14 PM, Frediano Ziglio wrote:
As we don't use any token there's no reason to not queue
directly instead of passing through RedCharDevice.
This will make easier to limit the queue which currently is
unlimited.

Hi,

If we need flow control, how difficult would it be to add support
for tokens ?
( there is a "todo: add flow control" comment in spicevmc ).

Uri.


Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx>
---
  server/spicevmc.c | 15 +++++----------
  1 file changed, 5 insertions(+), 10 deletions(-)

diff --git a/server/spicevmc.c b/server/spicevmc.c
index 84bbb73c2..8c41573ae 100644
--- a/server/spicevmc.c
+++ b/server/spicevmc.c
@@ -360,29 +360,24 @@ static RedPipeItem *spicevmc_chardev_read_msg_from_dev(RedCharDevice *self,
msg_item_compressed = try_compress_lz4(channel, n, msg_item);
          if (msg_item_compressed != NULL) {
-            return &msg_item_compressed->base;
+            red_channel_client_pipe_add_push(channel->rcc, &msg_item_compressed->base);
+            return NULL;
          }
  #endif
          stat_inc_counter(channel->out_data, n);
          msg_item->uncompressed_data_size = n;
          msg_item->buf_used = n;
-        return &msg_item->base;
-    } else {
-        channel->pipe_item = msg_item;
+        red_channel_client_pipe_add_push(channel->rcc, &msg_item->base);
          return NULL;
      }
+    channel->pipe_item = msg_item;
+    return NULL;
  }
static void spicevmc_chardev_send_msg_to_client(RedCharDevice *self,
                                                  RedPipeItem *msg,
                                                  RedClient *client)
  {
-    RedCharDeviceSpiceVmc *vmc = RED_CHAR_DEVICE_SPICEVMC(self);
-    RedVmcChannel *channel = RED_VMC_CHANNEL(vmc->channel);
-
-    spice_assert(red_channel_client_get_client(channel->rcc) == client);
-    red_pipe_item_ref(msg);
-    red_channel_client_pipe_add_push(channel->rcc, msg);
  }
static void red_port_init_item_free(struct RedPipeItem *base)


_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux Virtualization]     [Linux Virtualization]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]