[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC 0/3] virtiofsd: get/set log level via DBus
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [RFC 0/3] virtiofsd: get/set log level via DBus |
Date: |
Thu, 5 Sep 2019 16:21:33 +0100 |
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
- [Qemu-devel] [RFC 0/3] virtiofsd: get/set log level via DBus,
Stefan Hajnoczi <=
[Qemu-devel] [RFC 3/3] virtiofsd: add virtiofsctl command-line management tool, Stefan Hajnoczi, 2019/09/05