From: Jamie Lokier <jamie@shareable.org>
To: Amit Shah <amit.shah@redhat.com>
Cc: Luiz Capitulino <lcapitulino@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
Gerd Hoffmann <kraxel@redhat.com>,
qemu list <qemu-devel@nongnu.org>,
Juan Quintela <quintela@redhat.com>
Subject: Re: [Qemu-devel] Re: [PATCH 10/15] virtio-serial: Add QMP events for failed port/device add
Date: Fri, 26 Mar 2010 14:44:23 +0000 [thread overview]
Message-ID: <20100326144423.GA11626@shareable.org> (raw)
In-Reply-To: <20100326134936.GF7039@amit-x200.redhat.com>
Amit Shah wrote:
> Problem is we're going to have to maintain a lot of state if we're going
> to provide guarantees.
>
> One solution is to always have an in-qemu user of the serial
> functionality that sits between the app and the guest and the in-qemu
> user can signal to the app about such things.
Isn't that what I suggested? I don't mind how the app is signalled.
I'm just thinking of the simplest way to do it. It doesn't have to
live in the virtio-serial driver, just be signalled somehow out of it.
> > If communication with the external host app is over a local socket
> > (AF_UNIX or AF_INET or mkpipe), qemu could just disconnect and
> > reconnect whenever the guest does, which is perfectly logical and
> > solves this.
>
> The virtio-serial code cannot know what kind of a connection it has with
> the host app.
True, but the qemu internal plumbing could pass an open/close event to
that connection handler, for it to do whatever's appropriate.
I don't think that 1 bit state ("open" or "closed") is too much to
carry around in migration etc.
> > If neither of those are used, then a bit more context from QMP is
> > needed, such as the exact number of bytes transmitted prior to the
> > reset, presumably in a virtio-serial close event.
>
> Yeah; that's some state to maintain -- and I'm not sure we should do
> that.
I'd rather not count bytes anyway. That smacks too much of
maintaining long term history. I'd rather it was 1 bit of state, and
the host app connection handler able to use it.
> If we start adding some state now, we could end up adding more
> later, and it could soon become a mess.
Each thing ought to be weighed on its merits.
Without this specific thing, which is an indicator that guest has lost
state outside its control, the guest<->host communication is
unreliable (even for things like "cut and paste"), so every app that
cares has to implement a packet framing protocol with no binary data
(to reserve an escaping byte), or with CRCs like
PPP-over-virtio-serial, which is complicated and silly imho. If it
were a real serial port, not emulated, that's the sort of thing apps
would actually do (or use timeouts, which are more dubious in
emulator-land). But I hope we're not that sadistic :-)
*Inband* open/close indication aren't 100% guarantees of reliability,
but I think they raise it to the point where an app can usefully count
on it.
-- Jamie
next prev parent reply other threads:[~2010-03-26 14:49 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-24 14:49 [Qemu-devel] [PATCH 00/15] v3: virtio-serial-bus fixes, new abi for port discovery Amit Shah
2010-03-24 14:49 ` [Qemu-devel] [PATCH 01/15] virtio-serial: save/load: Ensure target has enough ports Amit Shah
2010-03-24 14:49 ` [Qemu-devel] [PATCH 02/15] virtio-serial: save/load: Ensure nr_ports on src and dest are same Amit Shah
2010-03-24 14:49 ` [Qemu-devel] [PATCH 03/15] virtio-serial: save/load: Ensure we have hot-plugged ports instantiated Amit Shah
2010-03-24 14:49 ` [Qemu-devel] [PATCH 04/15] virtio-serial: save/load: Send target host connection status if different Amit Shah
2010-03-24 14:49 ` [Qemu-devel] [PATCH 05/15] virtio-serial: Use control messages to notify guest of new ports Amit Shah
2010-03-24 14:49 ` [Qemu-devel] [PATCH 06/15] virtio-serial: whitespace: match surrounding code Amit Shah
2010-03-24 14:49 ` [Qemu-devel] [PATCH 07/15] virtio-serial: Remove redundant check for 0-sized write request Amit Shah
2010-03-24 14:49 ` [Qemu-devel] [PATCH 08/15] virtio-serial: Update copyright year to 2010 Amit Shah
2010-03-24 14:49 ` [Qemu-devel] [PATCH 09/15] virtio-serial: Propagate errors in initialising ports / devices in guest Amit Shah
2010-03-24 14:49 ` [Qemu-devel] [PATCH 10/15] virtio-serial: Add QMP events for failed port/device add Amit Shah
2010-03-24 14:49 ` [Qemu-devel] [PATCH 11/15] virtio-serial: Send out guest data to ports only if port is opened Amit Shah
2010-03-24 14:49 ` [Qemu-devel] [PATCH 12/15] iov: Introduce a new file for helpers around iovs, add iov_from_buf() Amit Shah
2010-03-24 14:49 ` [Qemu-devel] [PATCH 13/15] iov: Add iov_to_buf and iov_size helpers Amit Shah
2010-03-24 14:49 ` [Qemu-devel] [PATCH 14/15] virtio-serial: Handle scatter-gather buffers for control messages Amit Shah
2010-03-24 14:49 ` [Qemu-devel] [PATCH 15/15] virtio-serial: Handle scatter/gather input from the guest Amit Shah
2010-03-30 13:44 ` [Qemu-devel] Re: [PATCH 14/15] virtio-serial: Handle scatter-gather buffers for control messages Juan Quintela
2010-03-30 13:47 ` Amit Shah
2010-03-24 20:34 ` [Qemu-devel] Re: [PATCH 10/15] virtio-serial: Add QMP events for failed port/device add Luiz Capitulino
2010-03-25 3:47 ` Amit Shah
2010-03-25 18:34 ` Luiz Capitulino
2010-03-26 1:17 ` Jamie Lokier
2010-03-26 2:07 ` Amit Shah
2010-03-26 4:07 ` Jamie Lokier
2010-03-26 4:56 ` Amit Shah
2010-03-26 5:23 ` Jamie Lokier
2010-03-26 13:49 ` Amit Shah
2010-03-26 14:44 ` Jamie Lokier [this message]
2010-03-26 14:57 ` Amit Shah
2010-03-28 15:01 ` Jamie Lokier
2010-03-26 13:05 ` Luiz Capitulino
2010-03-26 13:24 ` Amit Shah
2010-03-26 1:57 ` Amit Shah
2010-03-25 18:55 ` Luiz Capitulino
2010-03-26 2:16 ` Amit Shah
2010-03-26 13:14 ` Luiz Capitulino
2010-03-26 13:26 ` Amit Shah
2010-03-26 14:29 ` Luiz Capitulino
2010-03-26 14:43 ` Amit Shah
2010-03-26 17:52 ` Luiz Capitulino
2010-03-27 8:03 ` Amit Shah
2010-03-29 13:34 ` Luiz Capitulino
2010-03-26 16:51 ` Anthony Liguori
2010-03-26 1:09 ` [Qemu-devel] [PATCH 02/15] virtio-serial: save/load: Ensure nr_ports on src and dest are same Jamie Lokier
2010-03-26 2:03 ` Amit Shah
2010-03-26 4:08 ` Jamie Lokier
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=20100326144423.GA11626@shareable.org \
--to=jamie@shareable.org \
--cc=amit.shah@redhat.com \
--cc=kraxel@redhat.com \
--cc=lcapitulino@redhat.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.