This series is adding 9pfs support to Xenstore-stubdom, enabling it
to do logging to a dom0 directory.
This is a prerequisite for the final goal to add live update support
to Xenstore-stubdom, as it enables the stubdom to store its state in
a dom0 file.
The 9pfs backend is a new daemon written from scratch. Using a
dedicated 9pfs daemon has several advantages:
- it is using much less resources than a full blown qemu process
- it can serve multiple guests (the idea is to use it for other
infrastructure domains, like qemu-stubdom or driver domains, too)
- it is designed to support several security enhancements, like
limiting the number of files for a guest, or limiting the allocated
file system space
- it doesn't support file links (neither hard nor soft links) or
referencing parent directories via "..", minimizing the risk that
a guest can "escape" from its home directory
Note that for now the daemon only contains the minimal needed
functionality to do logging from Xenstore-stubdom. I didn't want to
add all the 9pfs commands and security add-ons in the beginning, in
order to avoid needless efforts in case the idea of the daemon is
being rejected.
Note that the series can only be committed after the related Mini-OS
series [1] has gone in.
[1]: https://lists.xen.org/archives/html/xen-devel/2023-11/threads.html#00639
Changes in V2:
- support of multiple rings per device
- xenlogd->xen-9pfsd rename
- addressed review comments
- fixed some bugs
Juergen Gross (29):
xen/public: add some more 9pfs xenstore paths
tools: add a new xen logging daemon
tools/xenlogd: connect to frontend
tools/xenlogd: add transport layer
tools/xenlogd: add 9pfs response generation support
tools/xenlogd: add 9pfs version request support
tools/xenlogd: add 9pfs attach request support
tools/xenlogd: add 9pfs walk request support
tools/xenlogd: add 9pfs open request support
tools/xenlogd: add 9pfs clunk request support
tools/xenlogd: add 9pfs create request support
tools/xenlogd: add 9pfs stat request support
tools/xenlogd: add 9pfs write request support
tools/xenlogd: add 9pfs read request support
tools/libs/light: add backend type for 9pfs PV devices
tools/xl: support new 9pfs backend xen-9pfsd
tools/helpers: allocate xenstore event channel for xenstore stubdom
tools/xenstored: rename xenbus_evtchn()
stubdom: extend xenstore stubdom configs
tools: add 9pfs device to xenstore-stubdom
tools/xenstored: add early_init() function
tools/xenstored: get own domid in stubdom case
tools/xenstored: rework ring page (un)map functions
tools/xenstored: split domain_init()
tools/xenstored: map stubdom interface
tools/xenstored: mount 9pfs device in stubdom
tools/xenstored: add helpers for filename handling
tools/xenstored: support complete log capabilities in stubdom
tools/xenstored: have a single do_control_memreport()
docs/man/xl.cfg.5.pod.in | 36 +-
stubdom/xenstore-minios.cfg | 2 +-
stubdom/xenstorepvh-minios.cfg | 2 +-
tools/Makefile | 1 +
tools/helpers/init-xenstore-domain.c | 9 +
tools/hotplug/Linux/launch-xenstore.in | 1 +
tools/include/libxl.h | 17 +
tools/include/xen-tools/common-macros.h | 4 +
tools/libs/light/libxl_9pfs.c | 174 ++-
tools/libs/light/libxl_create.c | 4 +-
tools/libs/light/libxl_dm.c | 2 +-
tools/libs/light/libxl_types.idl | 11 +
tools/libs/light/libxl_types_internal.idl | 1 +
tools/xen-9pfsd/.gitignore | 1 +
tools/xen-9pfsd/Makefile | 38 +
tools/xen-9pfsd/io.c | 1462 +++++++++++++++++++++
tools/xen-9pfsd/xen-9pfsd.c | 770 +++++++++++
tools/xen-9pfsd/xen-9pfsd.h | 98 ++
tools/xenstored/control.c | 29 +-
tools/xenstored/core.c | 20 +-
tools/xenstored/core.h | 13 +-
tools/xenstored/domain.c | 72 +-
tools/xenstored/domain.h | 2 +
tools/xenstored/lu_daemon.c | 4 +-
tools/xenstored/minios.c | 54 +-
tools/xenstored/posix.c | 18 +-
tools/xl/xl_parse.c | 36 +
xen/include/public/io/9pfs.h | 34 +
28 files changed, 2847 insertions(+), 68 deletions(-)
create mode 100644 tools/xen-9pfsd/.gitignore
create mode 100644 tools/xen-9pfsd/Makefile
create mode 100644 tools/xen-9pfsd/io.c
create mode 100644 tools/xen-9pfsd/xen-9pfsd.c
create mode 100644 tools/xen-9pfsd/xen-9pfsd.h
--
2.35.3