qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] Implementing 9p for Windows host


From: Greg Kurz
Subject: Re: [Qemu-devel] Implementing 9p for Windows host
Date: Mon, 11 Apr 2016 16:14:32 +0200

On Thu, 7 Apr 2016 13:41:24 +0200
Michael Fritscher <address@hidden> wrote:

> Good day,
> 
> I'm using qemu on a Windows host. One thing I stumbled over was missing 
> 9p support. I thought it was because of missing (x)attr, but Stefan Weil 
> told me that 9p is supported only under Linux hosts.
> 
> I searched a bit and got following questions:
>    * are my following results right: The data structure for 9p is 
> 9FSState, 

I guess you mean V9fsState defined in hw/9pfs/9p.h ?

> which has the element FileOperations ops. This is defined in 
> fsdev\file-op-9p.h, 

Yes.

> whis is implemented in 4 ways from hw\p9fs\p9-*.c. 

Yes there are currently 4 fs drivers:

hw/9pfs/9p-local.c
hw/9pfs/9p-handle.c
hw/9pfs/9p-proxy.c
hw/9pfs/9p-synth.c

> These are registered by fsdev\qemu-fsdev.c.

Yes, from the QEMU main() function.

vl.c:    ret = qemu_fsdev_add(opts);

>    * is the file hw\p9fs\p9-local.c the only cause 9p is working only 
> under Linux?

I don't know much about QEMU on windows but the configure script says:

VirtFS is supported only on Linux and requires libcap-devel and libattr-devel

and we have quite some files that currently include the <sys/xattr.h> system
header (or <attr/xattr.h> for older systems that have libattr), through the
hw/9pfs/9p-xattr.h header.

address@hidden qemu-master]$ git grep 9p-xattr.h
hw/9pfs/9p-cephfs.c:#include "9p-xattr.h"
hw/9pfs/9p-handle.c:#include "9p-xattr.h"
hw/9pfs/9p-local.c:#include "9p-xattr.h"
hw/9pfs/9p-posix-acl.c:#include "9p-xattr.h"
hw/9pfs/9p-synth.c:#include "9p-xattr.h"
hw/9pfs/9p-xattr-user.c:#include "9p-xattr.h"
hw/9pfs/9p-xattr.c:#include "9p-xattr.h"
hw/9pfs/9p.c:#include "9p-xattr.h"
hw/9pfs/virtio-9p-device.c:#include "9p-xattr.h"

libcap is needed to build the virtfs-proxy-helper tool.

>    * 9p-synth makes only a virtual file system without any references to 
> a real directory tree - so this should already work under Windows? If 
> not: Why not?

Maybe but 9p-synth.c still includes 9p-xattr.h

>    * How to implement the Windows support? I don't want to clutter the 
> 9p-local.c with #ifdefs all over the place, so my idea is to rename it 
> to 9p-local-posix.c, create a new 9p-local-windows.c and let the build 
> system include the right one?

Hmmm... I'm not a big fan of code duplication, especially such a big file.

>    * My first approach will be to skip all of the "fancy" things like 
> permissions (using faked ones), symlinks, special files and so on. Is 
> this ok?

It makes sense.

>    * Is already somebody else working on it or should I yust jump in?

Please jump in ! (and I see you've done so :)

>    * Is there any documentation I should read regarding 9p aside the 
> code itself, the user documentation and 
> http://wiki.qemu.org/Documentation/GettingStartedDevelopers ?

google ? :)

>    * Is there a person which could mentor me a bit (as I'm completely 
> new to qemu source or should I just write to this mailing list or in 
> irc's #qemu channel (I'm both in freenode and oftc)?

qemu-devel is the mentor you need :)

>    * Do I need care of any license agreement stuff? If I'm right all 
> files which I need to work with are GPL2, which is fine for me.
> 

Yes you need to care. Please have a look at the LICENSE file.

> Best regards and thanks,
> Michael Fritscher
> 

Cheers.

--
Greg




reply via email to

[Prev in Thread] Current Thread [Next in Thread]