Ping On Thu, Jun 27, 2019 at 10:54:29AM +0100, Daniel P. Berrangé wrote: > The libvirtd daemon has some support for systemd socket activation > from: > > commit 27a7081c2968ca0d7fbd590629b5a5303851f4a3 > Author: Martin Kletzander <mkletzan@xxxxxxxxxx> > Date: Tue Jul 15 15:28:53 2014 +0200 > > daemon: support passing FDs from the calling process > > First FD is the RW unix socket to listen on, second one (if > applicable) is the RO unix socket. > > This was originally intended for use by the libvirt client when doing > auto-spawning of libvirtd, but we later deleted that client side code > in > > commit be78814ae07f092d9c4e71fd82dd1947aba2f029 > Author: Michal Privoznik <mprivozn@xxxxxxxxxx> > Date: Thu Apr 2 14:41:17 2015 +0200 > > virNetSocketNewConnectUNIX: Use flocks when spawning a daemon > > We never added systemd socket units before as we need libvirtd to start > on boot to perform autostart. > > It was recently pointed out by Lennart that these two features are not > mutually exclusive though. Libvirtd can be set to start on boot, and > also have socket unit files. > > The idea is that we start libvirtd on boot, perform autostart, and then > libvirtd can exit if nothing is running. The socket unit files are then > there to start it again when a mgmt app connects. > > This series implements that strategy. In doing so the current socket > activation support was rewritten to be more flexible, able to cope with > the admin socket and the TCP/TLS sockets, all passed in any order. > > NB, I don't believe I have got the RPM upgrade procedure right yet. As > there are alot of scenario to test for upgrades, I need more validation > of that. The series is long enough now though, that it would benefit > from code review already > > This socket activation is also going to be important when we split out > the daemons, as we will use the same libvirtd codebase for these new > daemons, simply compiled with different options. > > Daniel P. Berrangé (23): > locking,logging: put a strong dep from admin socket to main socket > util: add helper API for getting UNIX path from socket address > rpc: add helper API for getting UNIX path from socket object > util: add VIR_AUTOSTRUCT for directly calling a struct free function > util: add API for resolving socket service names > util: add APIs for facilitating use of systemd activation FDs > rpc: ensure all sockets bind to same port when service is NULL > rpc: refactor RPC service constructors to share more code > rpc: allow creating RPC service from an array of FDs > rpc: avoid unlinking sockets passed in from systemd > rpc: add helper APIs for adding services with systemd activation > rpc: add API for checking whether an auth scheme is in use on a server > remote: simplify libvirtd code for deciding if SASL auth is needed > remote: fix handling of systemd activation wrt socket ordering > rpc: remove unused API for creating services from FDs > remote: add systemd socket units for UNIX/TCP sockets > remote: make system libvirtd exit when idle via timeout > remote: update config files to note usage wrt systemd socket > activation > util: remove code spawning with systemd activation env vars > locking: convert lock daemon to use systemd activation APIs > logging: convert log daemon to use systemd activation APIs > util: move code for getting listen FDs into systemd module > util: remove unused helper for getting UNIX socket path > > libvirt.spec.in | 24 +- > src/libvirt_private.syms | 10 +- > src/libvirt_remote.syms | 7 +- > src/locking/lock_daemon.c | 121 +++---- > src/locking/virtlockd-admin.socket.in | 2 + > src/logging/log_daemon.c | 121 +++---- > src/logging/virtlogd-admin.socket.in | 2 + > src/remote/Makefile.inc.am | 35 +++ > src/remote/libvirtd-admin.socket.in | 15 + > src/remote/libvirtd-ro.socket.in | 15 + > src/remote/libvirtd-tcp.socket.in | 14 + > src/remote/libvirtd-tls.socket.in | 14 + > src/remote/libvirtd.conf | 31 ++ > src/remote/libvirtd.service.in | 16 +- > src/remote/libvirtd.socket.in | 13 + > src/remote/libvirtd.sysconf | 3 +- > src/remote/remote_daemon.c | 255 +++++++-------- > src/rpc/virnetserver.c | 162 ++++++++++ > src/rpc/virnetserver.h | 26 ++ > src/rpc/virnetserverservice.c | 238 ++++++-------- > src/rpc/virnetserverservice.h | 24 +- > src/rpc/virnetsocket.c | 93 ++++-- > src/rpc/virnetsocket.h | 2 + > src/util/viralloc.h | 13 + > src/util/vircommand.c | 99 ------ > src/util/vircommand.h | 2 - > src/util/virsocketaddr.c | 93 ++++++ > src/util/virsocketaddr.h | 4 + > src/util/virsystemd.c | 434 ++++++++++++++++++++++++++ > src/util/virsystemd.h | 30 ++ > src/util/virutil.c | 116 ------- > src/util/virutil.h | 3 - > tests/commanddata/test24.log | 8 - > tests/commandtest.c | 58 ---- > tests/virsystemdtest.c | 169 ++++++++++ > 35 files changed, 1490 insertions(+), 782 deletions(-) > create mode 100644 src/remote/libvirtd-admin.socket.in > create mode 100644 src/remote/libvirtd-ro.socket.in > create mode 100644 src/remote/libvirtd-tcp.socket.in > create mode 100644 src/remote/libvirtd-tls.socket.in > create mode 100644 src/remote/libvirtd.socket.in > delete mode 100644 tests/commanddata/test24.log > > -- > 2.21.0 > Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list