qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: "Daniel P. Berrange" <berrange@redhat.com>
Cc: Eric Van Hensbergen <ericvanhensbergen@us.ibm.com>,
	Chris Wright <chrisw@redhat.com>, Gleb Natapov <gleb@redhat.com>,
	kvm-devel <kvm@vger.kernel.org>, Dor Laor <dlaor@redhat.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	Avi Kivity <avi@redhat.com>
Subject: [Qemu-devel] Re: A new direction for vmchannel?
Date: Sat, 24 Jan 2009 11:52:06 -0600	[thread overview]
Message-ID: <497B5546.5060000@codemonkey.ws> (raw)
In-Reply-To: <20090124171928.GA30108@redhat.com>

Daniel P. Berrange wrote:
> On Fri, Jan 23, 2009 at 08:45:33AM -0600, Anthony Liguori wrote:
>   
>> The userspace configuration aspects of the current implementation of 
>> vmchannel are pretty annoying.  Moreover, we would like to make use of 
>> something like vmchannel in a kernel driver and I fear that it's going 
>> to be difficult to do that.
>>
>> So here's an alternative proposal.
>>
>> Around 2.6.27ish, Eric and I added 9p over virtio support to v9fs.  This 
>> is all upstream.  We backported the v9fs modules all the way back to 
>> 2.6.18.  I have a 9p client and server library and patches available for 
>> QEMU.  We were using this for a file system pass through but we could 
>> also use it as a synthetic file system in the guest (like sysfs).
>>
>> The guest would just have to mount a directory in a well known location, 
>> and then you could get vmchannel like semantics by just opening a file 
>> read/write.  Better yet though would be if we actually exposed vmchannel 
>> as 9p so that management applications could implement sysfs-like 
>> hierarchies.
>>
>> I think there could be a great deal of utility in something like.  For 
>> portability to Windows (if an app cared), it would have to access the 
>> mount point through a library of some sort.  We would need a Windows 
>> virtio-9p driver that exposed the 9p session down to userspace.  We 
>> could then use our 9p client library in the portability library for Windows.
>>
>> Virtually all of the code is available for this today, the kernel bits 
>> are already upstream, there's a reasonable story for Windows, and 
>> there's very little that the guest can do to get in the way of things.
>>
>> The only thing that could potentially be an issue is SELinux.  I assume 
>> you'd have to do an SELinux policy for the guest application anyway 
>> though so it shouldn't be a problem.
>>     
>
> For use cases where you are exposing metadata from the host to the guest
> this would be a very convenient approach indeed. As asked elsewhere in this
> thread, my main thought would be about how well it suits a application that
> wants a generic stream based connection between host & guest ? Efficient 
> integration into a poll(2) based event loop would be key to that.

You mean for a very large number of files (determining which property 
has changed?).

The way you would do this today, without special inotify support, is to 
have a special file in the hierarchy called "change-notify".  You can 
write a list of deliminated files and whenever one of those files 
becomes readable, the file itself will become readable (returning a 
deliminated list of files that have changed since last read).

This way, you get a file you can select on for a very large number of 
files.  That said, it would be nice to add proper inotify support to 
v9fs too.

>  Regular
> files don't offer that kind of ability ordinarily, and not clear whether 
> fifo's would be provided for in p9fs between host/guest ?
>   

I'm going to put together a patch this weekend and I'll include a 
streaming example.  Basically, you just ignore the file offset and 
read/write to the file to your heart's content.

Regards,

Anthony Liguori

> In any case, if we have a usable p9fs backend for QEMU, I don't see why we 
> shouldn't integrate that in QEMU, regardless of whether it serves the more 
> general vmchannel use cases. Sharing filesystems is an interesting idea in
> its own right after all. 
>
> I also really don't like guest deployment / configuration complexity that
> is accompanying the NIC device based vmchannel approach. There are just 
> far too many things that can go wrong with it wrt the guest OS & apps using
> networking. IMHO, the core motivation of vmchannel is to have a secure 
> guest <->  host data transport that can we relied upon from the moment 
> guest userspace appears, preferrably with zero guest admin configuration
> requirements, and no need for authentication keys to establish guest 
> identity. UNIX domain sockets are a great example of this ideal, providing 
> a reliable data stream for the localhost before network makes any appearance,
> with builtin client authentication via SCM_CREDS.
>
> Regards,
> Daniel
>   

  reply	other threads:[~2009-01-24 17:52 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-23 14:45 [Qemu-devel] A new direction for vmchannel? Anthony Liguori
2009-01-23 17:12 ` [Qemu-devel] " Chris Wright
2009-01-23 17:37   ` Anthony Liguori
2009-01-23 20:43 ` Gleb Natapov
2009-01-23 20:58   ` Anthony Liguori
2009-01-24  0:02     ` Dor Laor
2009-01-24 10:22       ` Alexander Graf
2009-01-24 22:28         ` Dor Laor
2009-01-24 17:19 ` Daniel P. Berrange
2009-01-24 17:52   ` Anthony Liguori [this message]
2009-01-24 18:39     ` Gleb Natapov
2009-01-24 18:47       ` Anthony Liguori
2009-01-24 19:30       ` Anthony Liguori
2009-01-24 21:00         ` Jamie Lokier
2009-01-24 21:22           ` Anthony Liguori
2009-01-25 14:16     ` Daniel P. Berrange
2009-01-25 17:58       ` Anthony Liguori

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=497B5546.5060000@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=avi@redhat.com \
    --cc=berrange@redhat.com \
    --cc=chrisw@redhat.com \
    --cc=dlaor@redhat.com \
    --cc=ericvanhensbergen@us.ibm.com \
    --cc=gleb@redhat.com \
    --cc=kvm@vger.kernel.org \
    --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).