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 -- 2.25.1
