It is likely that virtiofsd will need to support "management commands" for reconfiguring it at runtime. The first use case was proposed by Eryu Guan for getting/setting the current log level.
I promised to try out DBus as the management interface because it has a rich feature set and is accessible from most programming languages. It should be able to support all the use cases we come up with. This patch series is a prototype that implements the get-log-level and set-log-level management commands via DBus. Use the new virtiofsctl tool to talk to a running virtiofsd process: # dbus-run-session ./virtiofsd ... ... Using dbus address unix:abstract=/tmp/dbus-H9WBbpjk3O,guid=0be16acefb868e6025a8737f5d7124d2 # export DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-H9WBbpjk3O,guid=0be16acefb868e6025a8737f5d7124d2 # ./virtiofsctl set-log-level err Most of the work is done by gdbus-codegen(1). It generates code for the org.qemu.Virtiofsd.xml interface definition. Our code can use the simple virtiofsd_get/set_log_level() APIs and it will make corresponding DBus calls. I'm pretty happy with this approach because the code is straightforward. It hasn't even triggered seccomp failures yet :). Error handling is a little problematic. I noticed that virtiofsctl silently returns success even if it cannot talk to virtiofsd. This is due to the code generated by gdbus-codegen(1) which has no error reporting :(. This can be solved by writing more low-level GDBus code instead of using the high-level generated bindings. What do you think about this approach? Stefan Hajnoczi (3): virtiofsd: add org.qemu.Virtiofsd interface virtiofsd: add DBus server to handle log level changes virtiofsd: add virtiofsctl command-line management tool configure | 7 + Makefile | 16 +++ Makefile.objs | 1 + contrib/virtiofsd/Makefile.objs | 10 +- contrib/virtiofsd/dbus.h | 9 ++ contrib/virtiofsd/dbus.c | 162 +++++++++++++++++++++++ contrib/virtiofsd/passthrough_ll.c | 8 +- contrib/virtiofsd/virtiofsctl.c | 55 ++++++++ .gitignore | 1 + contrib/virtiofsd/org.qemu.Virtiofsd.xml | 7 + 10 files changed, 274 insertions(+), 2 deletions(-) create mode 100644 contrib/virtiofsd/dbus.h create mode 100644 contrib/virtiofsd/dbus.c create mode 100644 contrib/virtiofsd/virtiofsctl.c create mode 100644 contrib/virtiofsd/org.qemu.Virtiofsd.xml -- 2.21.0