mbox series

[00/16] hw/9pfs: Add 9pfs support for Windows

Message ID 20221024045759.448014-1-bin.meng@windriver.com (mailing list archive)
Headers show
Series hw/9pfs: Add 9pfs support for Windows | expand

Message

Bin Meng Oct. 24, 2022, 4:57 a.m. UTC
At present there is no Windows support for 9p file system.
This series adds initial Windows support for 9p file system.

'local' file system backend driver is supported on Windows,
including open, read, write, close, rename, remove, etc.
All security models are supported. The mapped (mapped-xattr)
security model is implemented using NTFS Alternate Data Stream
(ADS) so the 9p export path shall be on an NTFS partition.

'synth' driver is adapted for Windows too so that we can now
run qtests on Windows for 9p related regression testing.

Example command line to test:

  "-fsdev local,path=c:\msys64,security_model=mapped,id=p9 -device virtio-9p-pci,fsdev=p9,mount_tag=p9fs"


Bin Meng (5):
  qemu/xattr.h: Exclude <sys/xattr.h> for Windows
  hw/9pfs: Drop unnecessary *xattr wrapper API declarations
  hw/9pfs: Replace the direct call to xxxat() APIs with a wrapper
  hw/9pfs: Introduce an opaque type 9P_FILE_ID
  hw/9pfs: Update P9_FILE_ID to support Windows

Guohuai Shi (11):
  hw/9pfs: Add missing definitions for Windows
  hw/9pfs: Implement Windows specific utilities functions for 9pfs
  hw/9pfs: Handle current directory offset for Windows
  hw/9pfs: Disable unsupported flags and features for Windows
  hw/9pfs: Update the local fs driver to support Windows
  hw/9pfs: Add Linux error number definition
  hw/9pfs: Translate Windows errno to Linux value
  fsdev: Disable proxy fs driver on Windows
  hw/9pfs: Update synth fs driver for Windows
  tests/qtest: virtio-9p-test: Adapt the case for win32
  meson.build: Turn on virtfs for Windows

 meson.build                  |  10 +-
 fsdev/file-op-9p.h           |  33 ++
 hw/9pfs/9p-file-id.h         |  29 ++
 hw/9pfs/9p-linux-errno.h     | 151 ++++++
 hw/9pfs/9p-local.h           |  15 +-
 hw/9pfs/9p-util.h            | 158 +++++--
 hw/9pfs/9p.h                 |  11 +
 include/qemu/xattr.h         |   4 +-
 fsdev/qemu-fsdev.c           |   2 +
 hw/9pfs/9p-local.c           | 532 ++++++++++++++++-----
 hw/9pfs/9p-synth.c           |   5 +-
 hw/9pfs/9p-util-darwin.c     |  14 +-
 hw/9pfs/9p-util-linux.c      |  14 +-
 hw/9pfs/9p-util-win32.c      | 885 +++++++++++++++++++++++++++++++++++
 hw/9pfs/9p-xattr.c           |  16 +-
 hw/9pfs/9p.c                 | 106 ++++-
 hw/9pfs/codir.c              |  15 +
 tests/qtest/virtio-9p-test.c |   7 +
 fsdev/meson.build            |   1 +
 hw/9pfs/meson.build          |   8 +-
 20 files changed, 1822 insertions(+), 194 deletions(-)
 create mode 100644 hw/9pfs/9p-file-id.h
 create mode 100644 hw/9pfs/9p-linux-errno.h
 create mode 100644 hw/9pfs/9p-util-win32.c

Comments

Bin Meng Oct. 27, 2022, 4:19 p.m. UTC | #1
Hi Christian,

On Mon, Oct 24, 2022 at 1:16 PM Bin Meng <bin.meng@windriver.com> wrote:
>
> At present there is no Windows support for 9p file system.
> This series adds initial Windows support for 9p file system.
>
> 'local' file system backend driver is supported on Windows,
> including open, read, write, close, rename, remove, etc.
> All security models are supported. The mapped (mapped-xattr)
> security model is implemented using NTFS Alternate Data Stream
> (ADS) so the 9p export path shall be on an NTFS partition.
>
> 'synth' driver is adapted for Windows too so that we can now
> run qtests on Windows for 9p related regression testing.
>
> Example command line to test:
>
>   "-fsdev local,path=c:\msys64,security_model=mapped,id=p9 -device virtio-9p-pci,fsdev=p9,mount_tag=p9fs"
>
>
> Bin Meng (5):
>   qemu/xattr.h: Exclude <sys/xattr.h> for Windows
>   hw/9pfs: Drop unnecessary *xattr wrapper API declarations
>   hw/9pfs: Replace the direct call to xxxat() APIs with a wrapper
>   hw/9pfs: Introduce an opaque type 9P_FILE_ID
>   hw/9pfs: Update P9_FILE_ID to support Windows
>
> Guohuai Shi (11):
>   hw/9pfs: Add missing definitions for Windows
>   hw/9pfs: Implement Windows specific utilities functions for 9pfs
>   hw/9pfs: Handle current directory offset for Windows
>   hw/9pfs: Disable unsupported flags and features for Windows
>   hw/9pfs: Update the local fs driver to support Windows
>   hw/9pfs: Add Linux error number definition
>   hw/9pfs: Translate Windows errno to Linux value
>   fsdev: Disable proxy fs driver on Windows
>   hw/9pfs: Update synth fs driver for Windows
>   tests/qtest: virtio-9p-test: Adapt the case for win32
>   meson.build: Turn on virtfs for Windows
>

With the latest 9p test case refactoring in the mainline, I will have
to cherry-pick the following 2 patches in this series, to v6 of
"tests/qtest: Enable running qtest on Windows" series [1], in order to
get qtest on Windows build successfully.

[06/16] hw/9pfs: Add missing definitions for Windows
[15/16] tests/qtest: virtio-9p-test: Adapt the case for win32

I will include the above 2 patches in the v6 qtest windows support series.

[1] http://patchwork.ozlabs.org/project/qemu-devel/list/?series=321695

Regards,
Bin
Christian Schoenebeck Oct. 27, 2022, 4:30 p.m. UTC | #2
On Thursday, October 27, 2022 6:19:27 PM CEST Bin Meng wrote:
> Hi Christian,
> 
> On Mon, Oct 24, 2022 at 1:16 PM Bin Meng <bin.meng@windriver.com> wrote:
> >
> > At present there is no Windows support for 9p file system.
> > This series adds initial Windows support for 9p file system.
> >
> > 'local' file system backend driver is supported on Windows,
> > including open, read, write, close, rename, remove, etc.
> > All security models are supported. The mapped (mapped-xattr)
> > security model is implemented using NTFS Alternate Data Stream
> > (ADS) so the 9p export path shall be on an NTFS partition.
> >
> > 'synth' driver is adapted for Windows too so that we can now
> > run qtests on Windows for 9p related regression testing.
> >
> > Example command line to test:
> >
> >   "-fsdev local,path=c:\msys64,security_model=mapped,id=p9 -device virtio-9p-pci,fsdev=p9,mount_tag=p9fs"
> >
> >
> > Bin Meng (5):
> >   qemu/xattr.h: Exclude <sys/xattr.h> for Windows
> >   hw/9pfs: Drop unnecessary *xattr wrapper API declarations
> >   hw/9pfs: Replace the direct call to xxxat() APIs with a wrapper
> >   hw/9pfs: Introduce an opaque type 9P_FILE_ID
> >   hw/9pfs: Update P9_FILE_ID to support Windows
> >
> > Guohuai Shi (11):
> >   hw/9pfs: Add missing definitions for Windows
> >   hw/9pfs: Implement Windows specific utilities functions for 9pfs
> >   hw/9pfs: Handle current directory offset for Windows
> >   hw/9pfs: Disable unsupported flags and features for Windows
> >   hw/9pfs: Update the local fs driver to support Windows
> >   hw/9pfs: Add Linux error number definition
> >   hw/9pfs: Translate Windows errno to Linux value
> >   fsdev: Disable proxy fs driver on Windows
> >   hw/9pfs: Update synth fs driver for Windows
> >   tests/qtest: virtio-9p-test: Adapt the case for win32
> >   meson.build: Turn on virtfs for Windows
> >
> 
> With the latest 9p test case refactoring in the mainline, I will have
> to cherry-pick the following 2 patches in this series, to v6 of
> "tests/qtest: Enable running qtest on Windows" series [1], in order to
> get qtest on Windows build successfully.
> 
> [06/16] hw/9pfs: Add missing definitions for Windows
> [15/16] tests/qtest: virtio-9p-test: Adapt the case for win32
> 
> I will include the above 2 patches in the v6 qtest windows support series.

No need to add those patches as they are already being queued separately. Just
add appropriate tag(s) to the first patch:

Based-on: <MESSAGE-ID>

I already had a quick look on this version, will try to give feedback
tomorrow.

This feature won't make it into 7.2 release anyway, so patience please. ;-)

Best regards,
Christian Schoenebeck

> [1] http://patchwork.ozlabs.org/project/qemu-devel/list/?series=321695
> 
> Regards,
> Bin
>
Bin Meng Oct. 28, 2022, 2:25 a.m. UTC | #3
On Fri, Oct 28, 2022 at 12:31 AM Christian Schoenebeck
<qemu_oss@crudebyte.com> wrote:
>
> On Thursday, October 27, 2022 6:19:27 PM CEST Bin Meng wrote:
> > Hi Christian,
> >
> > On Mon, Oct 24, 2022 at 1:16 PM Bin Meng <bin.meng@windriver.com> wrote:
> > >
> > > At present there is no Windows support for 9p file system.
> > > This series adds initial Windows support for 9p file system.
> > >
> > > 'local' file system backend driver is supported on Windows,
> > > including open, read, write, close, rename, remove, etc.
> > > All security models are supported. The mapped (mapped-xattr)
> > > security model is implemented using NTFS Alternate Data Stream
> > > (ADS) so the 9p export path shall be on an NTFS partition.
> > >
> > > 'synth' driver is adapted for Windows too so that we can now
> > > run qtests on Windows for 9p related regression testing.
> > >
> > > Example command line to test:
> > >
> > >   "-fsdev local,path=c:\msys64,security_model=mapped,id=p9 -device virtio-9p-pci,fsdev=p9,mount_tag=p9fs"
> > >
> > >
> > > Bin Meng (5):
> > >   qemu/xattr.h: Exclude <sys/xattr.h> for Windows
> > >   hw/9pfs: Drop unnecessary *xattr wrapper API declarations
> > >   hw/9pfs: Replace the direct call to xxxat() APIs with a wrapper
> > >   hw/9pfs: Introduce an opaque type 9P_FILE_ID
> > >   hw/9pfs: Update P9_FILE_ID to support Windows
> > >
> > > Guohuai Shi (11):
> > >   hw/9pfs: Add missing definitions for Windows
> > >   hw/9pfs: Implement Windows specific utilities functions for 9pfs
> > >   hw/9pfs: Handle current directory offset for Windows
> > >   hw/9pfs: Disable unsupported flags and features for Windows
> > >   hw/9pfs: Update the local fs driver to support Windows
> > >   hw/9pfs: Add Linux error number definition
> > >   hw/9pfs: Translate Windows errno to Linux value
> > >   fsdev: Disable proxy fs driver on Windows
> > >   hw/9pfs: Update synth fs driver for Windows
> > >   tests/qtest: virtio-9p-test: Adapt the case for win32
> > >   meson.build: Turn on virtfs for Windows
> > >
> >
> > With the latest 9p test case refactoring in the mainline, I will have
> > to cherry-pick the following 2 patches in this series, to v6 of
> > "tests/qtest: Enable running qtest on Windows" series [1], in order to
> > get qtest on Windows build successfully.
> >
> > [06/16] hw/9pfs: Add missing definitions for Windows
> > [15/16] tests/qtest: virtio-9p-test: Adapt the case for win32
> >
> > I will include the above 2 patches in the v6 qtest windows support series.
>
> No need to add those patches as they are already being queued separately. Just
> add appropriate tag(s) to the first patch:
>
> Based-on: <MESSAGE-ID>

Sure, but I really want to get the qtest windows support patch series
merged first.

I will disable the 9p test for Windows in my v6 then. We will enable
the 9p test later when it lands on the mainline.

>
> I already had a quick look on this version, will try to give feedback
> tomorrow.
>
> This feature won't make it into 7.2 release anyway, so patience please. ;-)
>
> Best regards,
> Christian Schoenebeck
>
> > [1] http://patchwork.ozlabs.org/project/qemu-devel/list/?series=321695

Regards,
Bin