From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org, virtio-fs@redhat.com
Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Eryu Guan" <eguan@linux.alibaba.com>,
"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
"Stefan Hajnoczi" <stefanha@redhat.com>
Subject: [Qemu-devel] [RFC 0/3] virtiofsd: get/set log level via DBus
Date: Thu, 5 Sep 2019 16:21:33 +0100 [thread overview]
Message-ID: <20190905152136.30637-1-stefanha@redhat.com> (raw)
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
next reply other threads:[~2019-09-05 15:23 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-05 15:21 Stefan Hajnoczi [this message]
2019-09-05 15:21 ` [Qemu-devel] [RFC 1/3] virtiofsd: add org.qemu.Virtiofsd interface Stefan Hajnoczi
2019-09-05 15:21 ` [Qemu-devel] [RFC 2/3] virtiofsd: add DBus server to handle log level changes Stefan Hajnoczi
2019-09-05 17:27 ` Dr. David Alan Gilbert
2019-09-06 10:23 ` Stefan Hajnoczi
2019-09-06 10:49 ` Daniel P. Berrangé
2019-09-06 11:12 ` Dr. David Alan Gilbert
2019-09-06 11:48 ` Daniel P. Berrangé
2019-09-05 15:21 ` [Qemu-devel] [RFC 3/3] virtiofsd: add virtiofsctl command-line management tool Stefan Hajnoczi
2019-09-05 17:12 ` Dr. David Alan Gilbert
2019-09-05 20:03 ` Marc-André Lureau
2019-09-06 10:33 ` Stefan Hajnoczi
2019-09-05 17:40 ` [Qemu-devel] [RFC 0/3] virtiofsd: get/set log level via DBus Dr. David Alan Gilbert
2019-09-06 10:29 ` Stefan Hajnoczi
2019-09-06 10:35 ` Dr. David Alan Gilbert
2019-09-06 11:03 ` Daniel P. Berrangé
2019-09-06 10:47 ` Daniel P. Berrangé
2019-09-09 12:37 ` Stefan Hajnoczi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190905152136.30637-1-stefanha@redhat.com \
--to=stefanha@redhat.com \
--cc=dgilbert@redhat.com \
--cc=eguan@linux.alibaba.com \
--cc=marcandre.lureau@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=virtio-fs@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).