qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: Gerd Hoffmann <kraxel@redhat.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 0/2] Tunnel character device data over VNC (v1)
Date: Wed, 01 Jul 2009 16:32:27 -0500	[thread overview]
Message-ID: <4A4BD5EB.5060701@codemonkey.ws> (raw)
In-Reply-To: <4A4BCD80.2000906@redhat.com>

Gerd Hoffmann wrote:

> With multiple connections and multiplexing:  You'll just connect, type 
> a few commands, disconnect, done.  You'll even see what you have done 
> when you come back to the office the next day.
>
> Also note that the vnc server accepts input from multiple clients as 
> well, which can lead to simliar problems.  Nobody wants to kill 
> support for multiple clients just because of that, because in practice 
> it isn't a issue.

I don't disagree with your use-case.  What I'm pointing out, is that we 
need to do some major surgery to get there.

The current chardev protocol has no real notion of flow control and 
assumes a static bidirectional channel between the front-end and 
back-end.  Flow control policy is inconsistent and those decisions are 
made in the back-end (i.e. tcp:).

We really need to push flow-control to be a proper part of the protocol 
though so that the front-end can participate.  For instance, 
virtio-console/serial is fully capable of implementing flow control.  
Punting buffering policy to the guest is IMHO the best possible solution 
to the general problem.

Having multiple connections within a chardev really also needs to be 
part of the monitor protocol because it's fundamental to flow-control.  
We want the front-end to have enough information to know how many 
clients are connected and which ones are ready to receive.

When dealing with a single I/O source, it should be front-end policy to 
determine what to do.  Certainly, there are some front-ends (like the 
monitor) that can support multiple I/O sources.  Another example is the 
VNC server which really should be using chardevs.

I agree that mirroring is a pretty reasonable policy to map a single I/O 
source to multiple clients for some devices.  That should be a front-end 
decision though.

In this model, I still don't see having two different back-ends 
connected to a single front-end.  I don't know if I agree there's a 
whole lot of value in that although the implementation is straight 
forward (a special back-end that unifies multiple front-ends as sessions).

Regards,

Anthony Liguori

  reply	other threads:[~2009-07-01 21:32 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-01 16:21 [Qemu-devel] [PATCH 0/2] Tunnel character device data over VNC (v1) Daniel P. Berrange
2009-07-01 16:26 ` [Qemu-devel] [PATCH 1/2] APIs to capture character device data Daniel P. Berrange
2009-07-01 16:27 ` [Qemu-devel] [PATCH 2/2] VNC char device data stream tunnelling Daniel P. Berrange
2009-07-01 18:44   ` Anthony Liguori
2009-07-01 16:32 ` [Qemu-devel] [PATCH 0/2] Tunnel character device data over VNC (v1) Daniel P. Berrange
2009-07-01 16:42 ` Gerd Hoffmann
2009-07-01 16:50   ` Daniel P. Berrange
2009-07-01 17:30     ` Gerd Hoffmann
2009-07-01 18:50       ` Daniel P. Berrange
2009-07-01 19:27         ` Gerd Hoffmann
2009-07-01 18:51       ` Anthony Liguori
2009-07-01 19:41         ` Gerd Hoffmann
2009-07-01 19:59           ` Anthony Liguori
2009-07-01 20:56             ` Gerd Hoffmann
2009-07-01 21:32               ` Anthony Liguori [this message]
2009-07-01 22:46                 ` Gerd Hoffmann
2009-07-02  2:30               ` Jamie Lokier
2009-07-01 21:07             ` Daniel P. Berrange
2009-07-01 18:36 ` Anthony Liguori
2009-07-01 18:44   ` Daniel P. Berrange
2009-07-01 18:47     ` Anthony Liguori
2009-07-01 18:52       ` Daniel P. Berrange
2009-07-01 19:11         ` Anthony Liguori
2009-07-01 19:27           ` Daniel P. Berrange

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4A4BD5EB.5060701@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=kraxel@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).