[libvirt] [PATCH 0/6] Honour use of /run instead of /var/run on distros

Distros using systemd all use /run instead of /var/run. Libvirt has not adapted, relying on the symlink between the two for compat. This is an issue for UNIX sockets though, as systemd rewrites /var/run to /run before binding to a socket and this means libvirtd cannot identify sockets it is passed with old systemd. Daniel P. Berrangé (6): build: use $(COMMON_UNIT_VARS) for logging/locking systemd units systemd: honour $runstatedir in socket unit files build: honour $(runstatedir) in make rules src: honour the RUNSTATEDIR variable in all code build: support customization of runstatedir variable with old autoconf rpm: set runstatedir to /run directory configure.ac | 23 +++++++++++++++++ libvirt.spec.in | 15 +++++------ src/Makefile.am | 2 +- src/bhyve/bhyve_utils.h | 2 +- src/interface/interface_backend_netcf.c | 2 +- src/interface/interface_backend_udev.c | 2 +- src/libvirt-admin.c | 2 +- src/libxl/Makefile.inc.am | 4 +-- src/libxl/libxl_conf.h | 2 +- src/locking/Makefile.inc.am | 20 ++++----------- src/locking/lock_daemon.c | 18 +++++++------- src/locking/lock_driver_lockd.c | 2 +- src/locking/virtlockd-admin.socket.in | 2 +- src/locking/virtlockd.pod | 8 +++--- src/locking/virtlockd.socket.in | 2 +- src/logging/Makefile.inc.am | 16 +++--------- src/logging/log_daemon.c | 18 +++++++------- src/logging/log_manager.c | 2 +- src/logging/virtlogd-admin.socket.in | 2 +- src/logging/virtlogd.pod | 8 +++--- src/logging/virtlogd.socket.in | 2 +- src/lxc/Makefile.inc.am | 4 +-- src/lxc/lxc_conf.h | 2 +- src/lxc/lxc_process.c | 2 +- src/network/Makefile.inc.am | 4 +-- src/network/bridge_driver.c | 4 +-- src/network/leaseshelper.c | 2 +- src/node_device/node_device_hal.c | 2 +- src/node_device/node_device_udev.c | 2 +- src/nwfilter/nwfilter_dhcpsnoop.c | 4 +-- src/nwfilter/nwfilter_driver.c | 4 +-- src/qemu/Makefile.inc.am | 8 +++--- src/qemu/qemu_conf.c | 4 +-- src/remote/Makefile.inc.am | 4 +++ src/remote/libvirtd-admin.socket.in | 2 +- src/remote/libvirtd-ro.socket.in | 2 +- src/remote/libvirtd.conf.in | 2 +- src/remote/libvirtd.pod | 10 ++++---- src/remote/libvirtd.socket.in | 2 +- src/remote/remote_daemon.c | 24 +++++++++--------- src/remote/remote_daemon_dispatch.c | 4 +-- src/remote/remote_driver.c | 6 +++++ src/remote/test_libvirtd.aug.in | 2 +- src/secret/secret_driver.c | 2 +- src/security/virt-aa-helper.c | 20 ++++++--------- src/storage/storage_driver.c | 2 +- src/util/virhostdev.c | 2 +- src/util/virpidfile.c | 8 +++--- src/util/virsystemd.c | 33 ++++++++++++++++--------- src/vz/vz_driver.c | 2 +- 50 files changed, 172 insertions(+), 151 deletions(-) -- 2.21.0

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- src/locking/Makefile.inc.am | 16 +++------------- src/logging/Makefile.inc.am | 16 +++------------- 2 files changed, 6 insertions(+), 26 deletions(-) diff --git a/src/locking/Makefile.inc.am b/src/locking/Makefile.inc.am index 37d0e79f40..68cd10013e 100644 --- a/src/locking/Makefile.inc.am +++ b/src/locking/Makefile.inc.am @@ -259,24 +259,14 @@ locking/lock_daemon_dispatch_stubs.h: $(LOCK_PROTOCOL) \ virtlockd.service: locking/virtlockd.service.in $(top_builddir)/config.status - $(AM_V_GEN)sed \ - -e 's|[@]sbindir[@]|$(sbindir)|g' \ - -e 's|[@]sysconfdir[@]|$(sysconfdir)|g' \ - < $< > $@-t && \ - mv $@-t $@ + $(AM_V_GEN)sed $(COMMON_UNIT_VARS) $< > $@-t && mv $@-t $@ virtlockd.socket: locking/virtlockd.socket.in $(top_builddir)/config.status - $(AM_V_GEN)sed \ - -e 's|[@]localstatedir[@]|$(localstatedir)|g' \ - < $< > $@-t && \ - mv $@-t $@ + $(AM_V_GEN)sed $(COMMON_UNIT_VARS) $< > $@-t && mv $@-t $@ virtlockd-admin.socket: locking/virtlockd-admin.socket.in \ $(top_builddir)/config.status - $(AM_V_GEN)sed \ - -e 's|[@]localstatedir[@]|$(localstatedir)|g' \ - < $< > $@-t && \ - mv $@-t $@ + $(AM_V_GEN)sed $(COMMON_UNIT_VARS) $< > $@-t && mv $@-t $@ virtlockd.8.in: locking/virtlockd.pod $(AM_V_GEN)$(POD2MAN) --section=8 $< $@-t1 && \ diff --git a/src/logging/Makefile.inc.am b/src/logging/Makefile.inc.am index b952021d00..7e441dbffb 100644 --- a/src/logging/Makefile.inc.am +++ b/src/logging/Makefile.inc.am @@ -123,21 +123,11 @@ virtlogd.8.in: logging/virtlogd.pod mv $@-t2 $@ virtlogd.service: logging/virtlogd.service.in $(top_builddir)/config.status - $(AM_V_GEN)sed \ - -e 's|[@]sbindir[@]|$(sbindir)|g' \ - -e 's|[@]sysconfdir[@]|$(sysconfdir)|g' \ - < $< > $@-t && \ - mv $@-t $@ + $(AM_V_GEN)sed $(COMMON_UNIT_VARS) $< > $@-t && mv $@-t $@ virtlogd.socket: logging/virtlogd.socket.in $(top_builddir)/config.status - $(AM_V_GEN)sed \ - -e 's|[@]localstatedir[@]|$(localstatedir)|g' \ - < $< > $@-t && \ - mv $@-t $@ + $(AM_V_GEN)sed $(COMMON_UNIT_VARS) $< > $@-t && mv $@-t $@ virtlogd-admin.socket: logging/virtlogd-admin.socket.in \ $(top_builddir)/config.status - $(AM_V_GEN)sed \ - -e 's|[@]localstatedir[@]|$(localstatedir)|g' \ - < $< > $@-t && \ - mv $@-t $@ + $(AM_V_GEN)sed $(COMMON_UNIT_VARS) $< > $@-t && mv $@-t $@ -- 2.21.0

If a systemd socket uses /var/run in its path, systemd prints a warning at runtime [ 15.139976] systemd[1]: /usr/lib/systemd/system/virtlockd.socket:5: ListenStream= references a path below legacy directory /var/run/, updating /var/run/libvirt/virtlockd-sock → /run/libvirt/virtlockd-sock; please update the unit file accordingly. This minimal change updates the socket unit files to honour the $runstatedir path. There's no functional change by default yet since both expressions expand to the same value. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- src/Makefile.am | 2 +- src/locking/virtlockd-admin.socket.in | 2 +- src/locking/virtlockd.socket.in | 2 +- src/logging/virtlogd-admin.socket.in | 2 +- src/logging/virtlogd.socket.in | 2 +- src/remote/Makefile.inc.am | 4 ++++ src/remote/libvirtd-admin.socket.in | 2 +- src/remote/libvirtd-ro.socket.in | 2 +- src/remote/libvirtd.conf.in | 2 +- src/remote/libvirtd.socket.in | 2 +- src/remote/test_libvirtd.aug.in | 2 +- 11 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index 817a7ecf34..13b05f8440 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -93,7 +93,7 @@ DRIVER_SOURCES = man7_MANS = COMMON_UNIT_VARS = \ - -e 's|[@]localstatedir[@]|$(localstatedir)|g' \ + -e 's|[@]runstatedir[@]|$(runstatedir)|g' \ -e 's|[@]sbindir[@]|$(sbindir)|g' \ -e 's|[@]sysconfdir[@]|$(sysconfdir)|g' \ $(NULL) diff --git a/src/locking/virtlockd-admin.socket.in b/src/locking/virtlockd-admin.socket.in index cd7072238c..c66e0f9693 100644 --- a/src/locking/virtlockd-admin.socket.in +++ b/src/locking/virtlockd-admin.socket.in @@ -5,7 +5,7 @@ BindsTo=virtlockd.socket After=virtlockd.socket [Socket] -ListenStream=@localstatedir@/run/libvirt/virtlockd-admin-sock +ListenStream=@runstatedir@/libvirt/virtlockd-admin-sock Service=virtlockd.service SocketMode=0600 diff --git a/src/locking/virtlockd.socket.in b/src/locking/virtlockd.socket.in index d701b27516..52014f45ec 100644 --- a/src/locking/virtlockd.socket.in +++ b/src/locking/virtlockd.socket.in @@ -3,7 +3,7 @@ Description=Virtual machine lock manager socket Before=libvirtd.service [Socket] -ListenStream=@localstatedir@/run/libvirt/virtlockd-sock +ListenStream=@runstatedir@/libvirt/virtlockd-sock SocketMode=0600 [Install] diff --git a/src/logging/virtlogd-admin.socket.in b/src/logging/virtlogd-admin.socket.in index 672bd7470d..5c0fb1880e 100644 --- a/src/logging/virtlogd-admin.socket.in +++ b/src/logging/virtlogd-admin.socket.in @@ -5,7 +5,7 @@ BindsTo=virtlogd.socket After=virtlogd.socket [Socket] -ListenStream=@localstatedir@/run/libvirt/virtlogd-admin-sock +ListenStream=@runstatedir@/libvirt/virtlogd-admin-sock Service=virtlogd.service SocketMode=0600 diff --git a/src/logging/virtlogd.socket.in b/src/logging/virtlogd.socket.in index ae48cdab9a..9749a33197 100644 --- a/src/logging/virtlogd.socket.in +++ b/src/logging/virtlogd.socket.in @@ -3,7 +3,7 @@ Description=Virtual machine log manager socket Before=libvirtd.service [Socket] -ListenStream=@localstatedir@/run/libvirt/virtlogd-sock +ListenStream=@runstatedir@/libvirt/virtlogd-sock SocketMode=0600 [Install] diff --git a/src/remote/Makefile.inc.am b/src/remote/Makefile.inc.am index aca0b40140..abf04d998a 100644 --- a/src/remote/Makefile.inc.am +++ b/src/remote/Makefile.inc.am @@ -247,6 +247,7 @@ remote/libvirtd.conf: remote/libvirtd.conf.in -e '/[@]CUT_ENABLE_IP[@]/d' \ -e '/[@]END[@]/d' \ -e 's|[@]sysconfdir[@]|@sysconfdir@|' \ + -e 's|[@]runstatedir[@]|@runstatedir@|' \ -e 's|[@]DAEMON_NAME[@]|libvirtd|' \ $< > $@ @@ -254,6 +255,7 @@ remote/virtproxyd.conf: remote/libvirtd.conf.in $(AM_V_GEN)sed \ -e '/[@]CUT_ENABLE_IP[@]/d' \ -e '/[@]END[@]/d' \ + -e 's|[@]runstatedir[@]|@runstatedir@|' \ -e 's/[@]DAEMON_NAME[@]/virtproxyd/' \ $< > $@ @@ -290,6 +292,7 @@ remote/test_libvirtd.aug: remote/test_libvirtd.aug.in \ -e '/[@]CUT_ENABLE_IP[@]/d' \ -e '/[@]END[@]/d' \ -e 's|[@]sysconfdir[@]|@sysconfdir@|' \ + -e 's|[@]runstatedir[@]|@runstatedir@|' \ -e 's|[@]DAEMON_NAME[@]|libvirtd|' \ -e 's|[@]DAEMON_NAME_UC[@]|Libvirtd|' \ > $@ || rm -f $@ @@ -301,6 +304,7 @@ remote/test_virtproxyd.aug: remote/test_libvirtd.aug.in \ $(SED) \ -e '/[@]CUT_ENABLE_IP[@]/d' \ -e '/[@]END[@]/d' \ + -e 's|[@]runstatedir[@]|@runstatedir@|' \ -e 's/[@]DAEMON_NAME[@]/virtproxyd/' \ -e 's/[@]DAEMON_NAME_UC[@]/Virtproxyd/' \ > $@ || rm -f $@ diff --git a/src/remote/libvirtd-admin.socket.in b/src/remote/libvirtd-admin.socket.in index dcce7fdc93..4129abc1ab 100644 --- a/src/remote/libvirtd-admin.socket.in +++ b/src/remote/libvirtd-admin.socket.in @@ -8,7 +8,7 @@ After=@service@.socket [Socket] # The directory must match the @sysconfdir@/libvirt/@service@.conf unix_sock_dir setting # when using systemd version < 227 -ListenStream=@localstatedir@/run/libvirt/@sockprefix@-admin-sock +ListenStream=@runstatedir@/libvirt/@sockprefix@-admin-sock Service=@service@.service SocketMode=0600 diff --git a/src/remote/libvirtd-ro.socket.in b/src/remote/libvirtd-ro.socket.in index a287f78201..cb5e6bd60f 100644 --- a/src/remote/libvirtd-ro.socket.in +++ b/src/remote/libvirtd-ro.socket.in @@ -8,7 +8,7 @@ After=@service@.socket [Socket] # The directory must match the @sysconfdir@/libvirt/@service@.conf unix_sock_dir setting # when using systemd version < 227 -ListenStream=@localstatedir@/run/libvirt/@sockprefix@-sock-ro +ListenStream=@runstatedir@/libvirt/@sockprefix@-sock-ro Service=@service@.service SocketMode=0666 diff --git a/src/remote/libvirtd.conf.in b/src/remote/libvirtd.conf.in index 6969998306..fdef97f371 100644 --- a/src/remote/libvirtd.conf.in +++ b/src/remote/libvirtd.conf.in @@ -119,7 +119,7 @@ # This setting is not required or honoured if using systemd socket # activation with systemd version >= 227 # -#unix_sock_dir = "/var/run/libvirt" +#unix_sock_dir = "@runstatedir@/libvirt" diff --git a/src/remote/libvirtd.socket.in b/src/remote/libvirtd.socket.in index cb61409e23..df36df2125 100644 --- a/src/remote/libvirtd.socket.in +++ b/src/remote/libvirtd.socket.in @@ -6,7 +6,7 @@ Before=@service@.service [Socket] # The directory must match the @sysconfdir@/libvirt/@service@.conf unix_sock_dir setting # when using systemd version < 227 -ListenStream=@localstatedir@/run/libvirt/@sockprefix@-sock +ListenStream=@runstatedir@/libvirt/@sockprefix@-sock Service=@service@.service SocketMode=0666 diff --git a/src/remote/test_libvirtd.aug.in b/src/remote/test_libvirtd.aug.in index fc9fb69b67..1e17397af6 100644 --- a/src/remote/test_libvirtd.aug.in +++ b/src/remote/test_libvirtd.aug.in @@ -13,7 +13,7 @@ module Test_@DAEMON_NAME@ = { "unix_sock_ro_perms" = "0777" } { "unix_sock_rw_perms" = "0770" } { "unix_sock_admin_perms" = "0700" } - { "unix_sock_dir" = "/var/run/libvirt" } + { "unix_sock_dir" = "@runstatedir@/libvirt" } { "auth_unix_ro" = "none" } { "auth_unix_rw" = "none" } @CUT_ENABLE_IP@ -- 2.21.0

Creating various directories using $(runstatedir) instead of $(localstatedir)/run. There's no functional change by default yet since both expressions expand to the same value. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- src/libxl/Makefile.inc.am | 4 ++-- src/locking/Makefile.inc.am | 4 ++-- src/lxc/Makefile.inc.am | 4 ++-- src/network/Makefile.inc.am | 4 ++-- src/qemu/Makefile.inc.am | 8 ++++---- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/libxl/Makefile.inc.am b/src/libxl/Makefile.inc.am index 1587404586..4cfb4f030b 100644 --- a/src/libxl/Makefile.inc.am +++ b/src/libxl/Makefile.inc.am @@ -140,12 +140,12 @@ INSTALL_DATA_DIRS += libxl install-data-libxl: $(MKDIR_P) "$(DESTDIR)$(localstatedir)/lib/libvirt/libxl" - $(MKDIR_P) "$(DESTDIR)$(localstatedir)/run/libvirt/libxl" + $(MKDIR_P) "$(DESTDIR)$(runstatedir)/libvirt/libxl" $(MKDIR_P) "$(DESTDIR)$(localstatedir)/log/libvirt/libxl" uninstall-data-libxl: rmdir "$(DESTDIR)$(localstatedir)/lib/libvirt/libxl" ||: - rmdir "$(DESTDIR)$(localstatedir)/run/libvirt/libxl" ||: + rmdir "$(DESTDIR)$(runstatedir)/libvirt/libxl" ||: rmdir "$(DESTDIR)$(localstatedir)/log/libvirt/libxl" ||: endif WITH_LIBXL diff --git a/src/locking/Makefile.inc.am b/src/locking/Makefile.inc.am index 68cd10013e..fae92a6e45 100644 --- a/src/locking/Makefile.inc.am +++ b/src/locking/Makefile.inc.am @@ -203,7 +203,7 @@ INSTALL_DATA_DIRS += locking install-data-locking: $(MKDIR_P) "$(DESTDIR)$(localstatedir)/lib/libvirt/lockd" $(MKDIR_P) "$(DESTDIR)$(localstatedir)/lib/libvirt/lockd/files" - $(MKDIR_P) "$(DESTDIR)$(localstatedir)/run/libvirt/lockd" + $(MKDIR_P) "$(DESTDIR)$(runstatedir)/libvirt/lockd" if WITH_SANLOCK $(MKDIR_P) "$(DESTDIR)$(localstatedir)/lib/libvirt/sanlock" endif WITH_SANLOCK @@ -211,7 +211,7 @@ endif WITH_SANLOCK uninstall-data-locking: rmdir "$(DESTDIR)$(localstatedir)/lib/libvirt/lockd/files" ||: rmdir "$(DESTDIR)$(localstatedir)/lib/libvirt/lockd" ||: - rmdir "$(DESTDIR)$(localstatedir)/run/libvirt/lockd" ||: + rmdir "$(DESTDIR)$(runstatedir)/libvirt/lockd" ||: if WITH_SANLOCK rmdir "$(DESTDIR)$(localstatedir)/lib/libvirt/sanlock" ||: endif WITH_SANLOCK diff --git a/src/lxc/Makefile.inc.am b/src/lxc/Makefile.inc.am index 22c582c380..b4d560702c 100644 --- a/src/lxc/Makefile.inc.am +++ b/src/lxc/Makefile.inc.am @@ -229,12 +229,12 @@ INSTALL_DATA_DIRS += lxc install-data-lxc: $(MKDIR_P) "$(DESTDIR)$(localstatedir)/lib/libvirt/lxc" - $(MKDIR_P) "$(DESTDIR)$(localstatedir)/run/libvirt/lxc" + $(MKDIR_P) "$(DESTDIR)$(runstatedir)/libvirt/lxc" $(MKDIR_P) "$(DESTDIR)$(localstatedir)/log/libvirt/lxc" uninstall-data-lxc: rmdir "$(DESTDIR)$(localstatedir)/lib/libvirt/lxc" ||: - rmdir "$(DESTDIR)$(localstatedir)/run/libvirt/lxc" ||: + rmdir "$(DESTDIR)$(runstatedir)/libvirt/lxc" ||: rmdir "$(DESTDIR)$(localstatedir)/log/libvirt/lxc" ||: endif WITH_LXC diff --git a/src/network/Makefile.inc.am b/src/network/Makefile.inc.am index 091b722172..9f20dad7b3 100644 --- a/src/network/Makefile.inc.am +++ b/src/network/Makefile.inc.am @@ -136,7 +136,7 @@ UUID=$(shell uuidgen 2>/dev/null) install-data-network: $(MKDIR_P) "$(DESTDIR)$(localstatedir)/lib/libvirt/network" $(MKDIR_P) "$(DESTDIR)$(localstatedir)/lib/libvirt/dnsmasq" - $(MKDIR_P) "$(DESTDIR)$(localstatedir)/run/libvirt/network" + $(MKDIR_P) "$(DESTDIR)$(runstatedir)/libvirt/network" $(MKDIR_P) "$(DESTDIR)$(confdir)/qemu/networks/autostart" $(INSTALL_DATA) $(srcdir)/network/default.xml \ $(DESTDIR)$(confdir)/qemu/networks/default.xml @@ -163,7 +163,7 @@ uninstall-data-network: rmdir "$(DESTDIR)$(confdir)/qemu/networks/autostart" || : rmdir "$(DESTDIR)$(confdir)/qemu/networks" || : rmdir "$(DESTDIR)$(localstatedir)/lib/libvirt/network" ||: - rmdir "$(DESTDIR)$(localstatedir)/run/libvirt/network" ||: + rmdir "$(DESTDIR)$(runstatedir)/libvirt/network" ||: if WITH_FIREWALLD_ZONE rm -f $(DESTDIR)$(prefix)/lib/firewalld/zones/libvirt.xml endif WITH_FIREWALLD_ZONE diff --git a/src/qemu/Makefile.inc.am b/src/qemu/Makefile.inc.am index 30a9751cfd..d16b315ebc 100644 --- a/src/qemu/Makefile.inc.am +++ b/src/qemu/Makefile.inc.am @@ -187,20 +187,20 @@ INSTALL_DATA_DIRS += qemu install-data-qemu: $(MKDIR_P) -m 0751 "$(DESTDIR)$(localstatedir)/lib/libvirt/qemu" - $(MKDIR_P) "$(DESTDIR)$(localstatedir)/run/libvirt/qemu" + $(MKDIR_P) "$(DESTDIR)$(runstatedir)/libvirt/qemu" $(MKDIR_P) "$(DESTDIR)$(localstatedir)/cache/libvirt/qemu" $(MKDIR_P) "$(DESTDIR)$(localstatedir)/log/libvirt/qemu" $(MKDIR_P) "$(DESTDIR)$(localstatedir)/lib/libvirt/swtpm" - $(MKDIR_P) "$(DESTDIR)$(localstatedir)/run/libvirt/qemu/swtpm" + $(MKDIR_P) "$(DESTDIR)$(runstatedir)/libvirt/qemu/swtpm" $(MKDIR_P) "$(DESTDIR)$(localstatedir)/log/swtpm/libvirt/qemu" uninstall-data-qemu: rmdir "$(DESTDIR)$(localstatedir)/lib/libvirt/qemu" ||: - rmdir "$(DESTDIR)$(localstatedir)/run/libvirt/qemu" ||: + rmdir "$(DESTDIR)$(runstatedir)/libvirt/qemu" ||: rmdir "$(DESTDIR)$(localstatedir)/cache/libvirt/qemu" ||: rmdir "$(DESTDIR)$(localstatedir)/log/libvirt/qemu" ||: rmdir "$(DESTDIR)$(localstatedir)/lib/libvirt/swtpm" - rmdir "$(DESTDIR)$(localstatedir)/run/libvirt/qemu/swtpm" ||: + rmdir "$(DESTDIR)$(runstatedir)/libvirt/qemu/swtpm" ||: rmdir "$(DESTDIR)$(localstatedir)/log/swtpm/libvirt/qemu" ||: endif WITH_QEMU -- 2.21.0

All code using LOCALSTATEDIR "/run" is updated to use RUNSTATEDIR instead. The exception is the remote driver client which still uses LOCALSTATEDIR "/run". The client needs to connect to remote machines which may not be using /run, so /var/run is more portable due to the /var/run -> /run symlink. Some duplicate paths in the apparmor code are also purged. There's no functional change by default yet since both expressions expand to the same value. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- src/bhyve/bhyve_utils.h | 2 +- src/interface/interface_backend_netcf.c | 2 +- src/interface/interface_backend_udev.c | 2 +- src/libvirt-admin.c | 2 +- src/libxl/libxl_conf.h | 2 +- src/locking/lock_daemon.c | 18 +++++++------- src/locking/lock_driver_lockd.c | 2 +- src/locking/virtlockd.pod | 8 +++--- src/logging/log_daemon.c | 18 +++++++------- src/logging/log_manager.c | 2 +- src/logging/virtlogd.pod | 8 +++--- src/lxc/lxc_conf.h | 2 +- src/lxc/lxc_process.c | 2 +- src/network/bridge_driver.c | 4 +-- src/network/leaseshelper.c | 2 +- src/node_device/node_device_hal.c | 2 +- src/node_device/node_device_udev.c | 2 +- src/nwfilter/nwfilter_dhcpsnoop.c | 4 +-- src/nwfilter/nwfilter_driver.c | 4 +-- src/qemu/qemu_conf.c | 4 +-- src/remote/libvirtd.pod | 10 ++++---- src/remote/remote_daemon.c | 24 +++++++++--------- src/remote/remote_daemon_dispatch.c | 4 +-- src/remote/remote_driver.c | 6 +++++ src/secret/secret_driver.c | 2 +- src/security/virt-aa-helper.c | 20 ++++++--------- src/storage/storage_driver.c | 2 +- src/util/virhostdev.c | 2 +- src/util/virpidfile.c | 8 +++--- src/util/virsystemd.c | 33 ++++++++++++++++--------- src/vz/vz_driver.c | 2 +- 31 files changed, 109 insertions(+), 96 deletions(-) diff --git a/src/bhyve/bhyve_utils.h b/src/bhyve/bhyve_utils.h index 3d212e3ccf..8dda6062b5 100644 --- a/src/bhyve/bhyve_utils.h +++ b/src/bhyve/bhyve_utils.h @@ -31,7 +31,7 @@ #define BHYVE_AUTOSTART_DIR SYSCONFDIR "/libvirt/bhyve/autostart" #define BHYVE_CONFIG_DIR SYSCONFDIR "/libvirt/bhyve" -#define BHYVE_STATE_DIR LOCALSTATEDIR "/run/libvirt/bhyve" +#define BHYVE_STATE_DIR RUNSTATEDIR "/libvirt/bhyve" #define BHYVE_LOG_DIR LOCALSTATEDIR "/log/libvirt/bhyve" typedef struct _virBhyveDriverConfig virBhyveDriverConfig; diff --git a/src/interface/interface_backend_netcf.c b/src/interface/interface_backend_netcf.c index eb509ccc13..9659e9fcf1 100644 --- a/src/interface/interface_backend_netcf.c +++ b/src/interface/interface_backend_netcf.c @@ -102,7 +102,7 @@ netcfStateInitialize(bool privileged, if (privileged) { if (virAsprintf(&driver->stateDir, - "%s/run/libvirt/interface", LOCALSTATEDIR) < 0) + "%s/libvirt/interface", RUNSTATEDIR) < 0) goto error; } else { VIR_AUTOFREE(char *) rundir = NULL; diff --git a/src/interface/interface_backend_udev.c b/src/interface/interface_backend_udev.c index ef748540d1..ddc3de5347 100644 --- a/src/interface/interface_backend_udev.c +++ b/src/interface/interface_backend_udev.c @@ -1181,7 +1181,7 @@ udevStateInitialize(bool privileged, if (privileged) { if (virAsprintf(&driver->stateDir, - "%s/run/libvirt/interface", LOCALSTATEDIR) < 0) + "%s/libvirt/interface", RUNSTATEDIR) < 0) goto cleanup; } else { VIR_AUTOFREE(char *) rundir = NULL; diff --git a/src/libvirt-admin.c b/src/libvirt-admin.c index 6ad4436bff..ba88f09824 100644 --- a/src/libvirt-admin.c +++ b/src/libvirt-admin.c @@ -149,7 +149,7 @@ getSocketPath(virURIPtr uri) } if (STREQ_NULLABLE(uri->path, "/system")) { - if (virAsprintf(&sock_path, LOCALSTATEDIR "/run/libvirt/%s", + if (virAsprintf(&sock_path, RUNSTATEDIR "/libvirt/%s", sockbase) < 0) goto error; } else if (STREQ_NULLABLE(uri->path, "/session")) { diff --git a/src/libxl/libxl_conf.h b/src/libxl/libxl_conf.h index 552f039d2a..27badfb292 100644 --- a/src/libxl/libxl_conf.h +++ b/src/libxl/libxl_conf.h @@ -48,7 +48,7 @@ #define LIBXL_CONFIG_BASE_DIR SYSCONFDIR "/libvirt" #define LIBXL_CONFIG_DIR SYSCONFDIR "/libvirt/libxl" #define LIBXL_AUTOSTART_DIR LIBXL_CONFIG_DIR "/autostart" -#define LIBXL_STATE_DIR LOCALSTATEDIR "/run/libvirt/libxl" +#define LIBXL_STATE_DIR RUNSTATEDIR "/libvirt/libxl" #define LIBXL_LOG_DIR LOCALSTATEDIR "/log/libvirt/libxl" #define LIBXL_LIB_DIR LOCALSTATEDIR "/lib/libvirt/libxl" #define LIBXL_SAVE_DIR LIBXL_LIB_DIR "/save" diff --git a/src/locking/lock_daemon.c b/src/locking/lock_daemon.c index 104483267f..ac242bf65c 100644 --- a/src/locking/lock_daemon.c +++ b/src/locking/lock_daemon.c @@ -447,8 +447,8 @@ virLockDaemonUnixSocketPaths(bool privileged, char **adminSockfile) { if (privileged) { - if (VIR_STRDUP(*sockfile, LOCALSTATEDIR "/run/libvirt/virtlockd-sock") < 0 || - VIR_STRDUP(*adminSockfile, LOCALSTATEDIR "/run/libvirt/virtlockd-admin-sock") < 0) + if (VIR_STRDUP(*sockfile, RUNSTATEDIR "/libvirt/virtlockd-sock") < 0 || + VIR_STRDUP(*adminSockfile, RUNSTATEDIR "/libvirt/virtlockd-admin-sock") < 0) goto error; } else { char *rundir = NULL; @@ -831,7 +831,7 @@ virLockDaemonExecRestartStatePath(bool privileged, char **state_file) { if (privileged) { - if (VIR_STRDUP(*state_file, LOCALSTATEDIR "/run/virtlockd-restart-exec.json") < 0) + if (VIR_STRDUP(*state_file, RUNSTATEDIR "/virtlockd-restart-exec.json") < 0) goto error; } else { char *rundir = NULL; @@ -1062,14 +1062,14 @@ virLockDaemonUsage(const char *argv0, bool privileged) " %s/libvirt/virtlockd.conf\n" "\n" " Sockets:\n" - " %s/run/libvirt/virtlockd-sock\n" + " %s/libvirt/virtlockd-sock\n" "\n" " PID file (unless overridden by -p):\n" - " %s/run/virtlockd.pid\n" + " %s/virtlockd.pid\n" "\n"), SYSCONFDIR, - LOCALSTATEDIR, - LOCALSTATEDIR); + RUNSTATEDIR, + RUNSTATEDIR); } else { fprintf(stderr, "%s", _("\n" @@ -1221,7 +1221,7 @@ int main(int argc, char **argv) { if (!pid_file && virPidFileConstructPath(privileged, - LOCALSTATEDIR, + RUNSTATEDIR, "virtlockd", &pid_file) < 0) { VIR_ERROR(_("Can't determine pid file path.")); @@ -1248,7 +1248,7 @@ int main(int argc, char **argv) { /* Ensure the rundir exists (on tmpfs on some systems) */ if (privileged) { - if (VIR_STRDUP_QUIET(run_dir, LOCALSTATEDIR "/run/libvirt") < 0) + if (VIR_STRDUP_QUIET(run_dir, RUNSTATEDIR "/libvirt") < 0) goto no_memory; } else { if (!(run_dir = virGetUserRuntimeDirectory())) { diff --git a/src/locking/lock_driver_lockd.c b/src/locking/lock_driver_lockd.c index f6371f3050..164f83eb4b 100644 --- a/src/locking/lock_driver_lockd.c +++ b/src/locking/lock_driver_lockd.c @@ -124,7 +124,7 @@ static char *virLockManagerLockDaemonPath(bool privileged) { char *path; if (privileged) { - if (VIR_STRDUP(path, LOCALSTATEDIR "/run/libvirt/virtlockd-sock") < 0) + if (VIR_STRDUP(path, RUNSTATEDIR "/libvirt/virtlockd-sock") < 0) return NULL; } else { char *rundir = NULL; diff --git a/src/locking/virtlockd.pod b/src/locking/virtlockd.pod index de0eb8ac18..0b9f758e29 100644 --- a/src/locking/virtlockd.pod +++ b/src/locking/virtlockd.pod @@ -72,11 +72,11 @@ upgrades of the virtlockd service. The default configuration file used by virtlockd, unless overridden on the command line using the B<-f>|B<--config> option. -=item F<LOCALSTATEDIR/run/libvirt/virtlockd-sock> +=item F<RUNSTATEDIR/libvirt/virtlockd-sock> The sockets libvirtd will use. -=item F<LOCALSTATEDIR/run/virtlockd.pid> +=item F<RUNSTATEDIR/virtlockd.pid> The PID file to use, unless overridden by the B<-p>|B<--pid-file> option. @@ -116,8 +116,8 @@ To retrieve the version of virtlockd: To start virtlockd, instructing it to daemonize and create a PID file: # virtlockd -d - # ls -la LOCALSTATEDIR/run/virtlockd.pid - -rw-r--r-- 1 root root 6 Jul 9 02:40 LOCALSTATEDIR/run/virtlockd.pid + # ls -la RUNSTATEDIR/virtlockd.pid + -rw-r--r-- 1 root root 6 Jul 9 02:40 RUNSTATEDIR/virtlockd.pid # =head1 BUGS diff --git a/src/logging/log_daemon.c b/src/logging/log_daemon.c index 4103f2cefe..f74e900aea 100644 --- a/src/logging/log_daemon.c +++ b/src/logging/log_daemon.c @@ -388,8 +388,8 @@ virLogDaemonUnixSocketPaths(bool privileged, char **adminSockfile) { if (privileged) { - if (VIR_STRDUP(*sockfile, LOCALSTATEDIR "/run/libvirt/virtlogd-sock") < 0 || - VIR_STRDUP(*adminSockfile, LOCALSTATEDIR "/run/libvirt/virtlogd-admin-sock") < 0) + if (VIR_STRDUP(*sockfile, RUNSTATEDIR "/libvirt/virtlogd-sock") < 0 || + VIR_STRDUP(*adminSockfile, RUNSTATEDIR "/libvirt/virtlogd-admin-sock") < 0) goto error; } else { char *rundir = NULL; @@ -623,7 +623,7 @@ virLogDaemonExecRestartStatePath(bool privileged, char **state_file) { if (privileged) { - if (VIR_STRDUP(*state_file, LOCALSTATEDIR "/run/virtlogd-restart-exec.json") < 0) + if (VIR_STRDUP(*state_file, RUNSTATEDIR "/virtlogd-restart-exec.json") < 0) goto error; } else { char *rundir = NULL; @@ -834,14 +834,14 @@ virLogDaemonUsage(const char *argv0, bool privileged) " %s/libvirt/virtlogd.conf\n" "\n" " Sockets:\n" - " %s/run/libvirt/virtlogd-sock\n" + " %s/libvirt/virtlogd-sock\n" "\n" " PID file (unless overridden by -p):\n" - " %s/run/virtlogd.pid\n" + " %s/virtlogd.pid\n" "\n"), SYSCONFDIR, - LOCALSTATEDIR, - LOCALSTATEDIR); + RUNSTATEDIR, + RUNSTATEDIR); } else { fprintf(stderr, "%s", _("\n" @@ -992,7 +992,7 @@ int main(int argc, char **argv) { if (!pid_file && virPidFileConstructPath(privileged, - LOCALSTATEDIR, + RUNSTATEDIR, "virtlogd", &pid_file) < 0) { VIR_ERROR(_("Can't determine pid file path.")); @@ -1019,7 +1019,7 @@ int main(int argc, char **argv) { /* Ensure the rundir exists (on tmpfs on some systems) */ if (privileged) { - if (VIR_STRDUP_QUIET(run_dir, LOCALSTATEDIR "/run/libvirt") < 0) + if (VIR_STRDUP_QUIET(run_dir, RUNSTATEDIR "/libvirt") < 0) goto no_memory; } else { if (!(run_dir = virGetUserRuntimeDirectory())) { diff --git a/src/logging/log_manager.c b/src/logging/log_manager.c index eb0a32b4b6..1613d1f8a8 100644 --- a/src/logging/log_manager.c +++ b/src/logging/log_manager.c @@ -45,7 +45,7 @@ virLogManagerDaemonPath(bool privileged) { char *path; if (privileged) { - if (VIR_STRDUP(path, LOCALSTATEDIR "/run/libvirt/virtlogd-sock") < 0) + if (VIR_STRDUP(path, RUNSTATEDIR "/libvirt/virtlogd-sock") < 0) return NULL; } else { char *rundir = NULL; diff --git a/src/logging/virtlogd.pod b/src/logging/virtlogd.pod index 5e44f84a85..01dde99296 100644 --- a/src/logging/virtlogd.pod +++ b/src/logging/virtlogd.pod @@ -72,11 +72,11 @@ upgrades of the virtlogd service. The default configuration file used by virtlogd, unless overridden on the command line using the B<-f>|B<--config> option. -=item F<LOCALSTATEDIR/run/libvirt/virtlogd-sock> +=item F<RUNSTATEDIR/libvirt/virtlogd-sock> The sockets libvirtd will use. -=item F<LOCALSTATEDIR/run/virtlogd.pid> +=item F<RUNSTATEDIR/virtlogd.pid> The PID file to use, unless overridden by the B<-p>|B<--pid-file> option. @@ -116,8 +116,8 @@ To retrieve the version of virtlogd: To start virtlogd, instructing it to daemonize and create a PID file: # virtlogd -d - # ls -la LOCALSTATEDIR/run/virtlogd.pid - -rw-r--r-- 1 root root 6 Jul 9 02:40 LOCALSTATEDIR/run/virtlogd.pid + # ls -la RUNSTATEDIR/virtlogd.pid + -rw-r--r-- 1 root root 6 Jul 9 02:40 RUNSTATEDIR/virtlogd.pid # =head1 BUGS diff --git a/src/lxc/lxc_conf.h b/src/lxc/lxc_conf.h index e26ca22d3c..12a201db38 100644 --- a/src/lxc/lxc_conf.h +++ b/src/lxc/lxc_conf.h @@ -38,7 +38,7 @@ #define LXC_DRIVER_NAME "LXC" #define LXC_CONFIG_DIR SYSCONFDIR "/libvirt/lxc" -#define LXC_STATE_DIR LOCALSTATEDIR "/run/libvirt/lxc" +#define LXC_STATE_DIR RUNSTATEDIR "/libvirt/lxc" #define LXC_LOG_DIR LOCALSTATEDIR "/log/libvirt/lxc" #define LXC_AUTOSTART_DIR LXC_CONFIG_DIR "/autostart" diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c index 3d03086ea7..cd65e7a0c0 100644 --- a/src/lxc/lxc_process.c +++ b/src/lxc/lxc_process.c @@ -470,7 +470,7 @@ static int virLXCProcessSetupNamespaceNet(int ns_type, const char *name) return -1; } - if (virAsprintf(&path, "/var/run/netns/%s", name) < 0) + if (virAsprintf(&path, "%s/netns/%s", RUNSTATEDIR, name) < 0) return -1; fd = open(path, O_RDONLY); VIR_FREE(path); diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index 86e2035b85..7b44184616 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -726,9 +726,9 @@ networkStateInitialize(bool privileged, VIR_STRDUP(network_driver->networkAutostartDir, SYSCONFDIR "/libvirt/qemu/networks/autostart") < 0 || VIR_STRDUP(network_driver->stateDir, - LOCALSTATEDIR "/run/libvirt/network") < 0 || + RUNSTATEDIR "/libvirt/network") < 0 || VIR_STRDUP(network_driver->pidDir, - LOCALSTATEDIR "/run/libvirt/network") < 0 || + RUNSTATEDIR "/libvirt/network") < 0 || VIR_STRDUP(network_driver->dnsmasqStateDir, LOCALSTATEDIR "/lib/libvirt/dnsmasq") < 0 || VIR_STRDUP(network_driver->radvdStateDir, diff --git a/src/network/leaseshelper.c b/src/network/leaseshelper.c index 481f29aa59..5e04e16171 100644 --- a/src/network/leaseshelper.c +++ b/src/network/leaseshelper.c @@ -160,7 +160,7 @@ main(int argc, char **argv) interface) < 0) goto cleanup; - if (VIR_STRDUP(pid_file, LOCALSTATEDIR "/run/leaseshelper.pid") < 0) + if (VIR_STRDUP(pid_file, RUNSTATEDIR "/leaseshelper.pid") < 0) goto cleanup; /* Try to claim the pidfile, exiting if we can't */ diff --git a/src/node_device/node_device_hal.c b/src/node_device/node_device_hal.c index d46e4e98f3..c613ca5808 100644 --- a/src/node_device/node_device_hal.c +++ b/src/node_device/node_device_hal.c @@ -619,7 +619,7 @@ nodeStateInitialize(bool privileged ATTRIBUTE_UNUSED, if (privileged) { if (virAsprintf(&driver->stateDir, - "%s/run/libvirt/nodedev", LOCALSTATEDIR) < 0) + "%s/libvirt/nodedev", RUNSTATEDIR) < 0) goto failure; } else { VIR_AUTOFREE(char *) rundir = NULL; diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c index adf60e4537..5550ee3a54 100644 --- a/src/node_device/node_device_udev.c +++ b/src/node_device/node_device_udev.c @@ -1830,7 +1830,7 @@ nodeStateInitialize(bool privileged, if (privileged) { if (virAsprintf(&driver->stateDir, - "%s/run/libvirt/nodedev", LOCALSTATEDIR) < 0) + "%s/libvirt/nodedev", RUNSTATEDIR) < 0) goto cleanup; } else { VIR_AUTOFREE(char *) rundir = NULL; diff --git a/src/nwfilter/nwfilter_dhcpsnoop.c b/src/nwfilter/nwfilter_dhcpsnoop.c index d8a1e7f8a8..2af8cfdd32 100644 --- a/src/nwfilter/nwfilter_dhcpsnoop.c +++ b/src/nwfilter/nwfilter_dhcpsnoop.c @@ -29,7 +29,7 @@ * while :; do kill -SIGTERM `pidof dhclient`; dhclient eth0; ifconfig eth0; done * * On the host check the lease file and that it's periodically shortened: - * cat /var/run/libvirt/network/nwfilter.leases; date +%s + * cat $runstatedir/libvirt/network/nwfilter.leases; date +%s * * On the host also check that the ebtables rules 'look' ok: * ebtables -t nat -L @@ -71,7 +71,7 @@ VIR_LOG_INIT("nwfilter.nwfilter_dhcpsnoop"); #ifdef HAVE_LIBPCAP -# define LEASEFILE_DIR LOCALSTATEDIR "/run/libvirt/network/" +# define LEASEFILE_DIR RUNSTATEDIR "/libvirt/network/" # define LEASEFILE LEASEFILE_DIR "nwfilter.leases" # define TMPLEASEFILE LEASEFILE_DIR "nwfilter.ltmp" diff --git a/src/nwfilter/nwfilter_driver.c b/src/nwfilter/nwfilter_driver.c index 6073143437..aef5bd4c7f 100644 --- a/src/nwfilter/nwfilter_driver.c +++ b/src/nwfilter/nwfilter_driver.c @@ -205,7 +205,7 @@ nwfilterStateInitialize(bool privileged, nwfilterDriverLock(); - if (VIR_STRDUP(driver->stateDir, LOCALSTATEDIR "/run/libvirt/nwfilter") < 0) + if (VIR_STRDUP(driver->stateDir, RUNSTATEDIR "/libvirt/nwfilter") < 0) goto error; if (virFileMakePathWithMode(driver->stateDir, S_IRWXU) < 0) { @@ -261,7 +261,7 @@ nwfilterStateInitialize(bool privileged, goto error; } - if (VIR_STRDUP(driver->bindingDir, LOCALSTATEDIR "/run/libvirt/nwfilter-binding") < 0) + if (VIR_STRDUP(driver->bindingDir, RUNSTATEDIR "/libvirt/nwfilter-binding") < 0) goto error; if (virFileMakePathWithMode(driver->bindingDir, S_IRWXU) < 0) { diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index 2953893337..89c183e46a 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -142,11 +142,11 @@ virQEMUDriverConfigPtr virQEMUDriverConfigNew(bool privileged) goto error; if (virAsprintf(&cfg->stateDir, - "%s/run/libvirt/qemu", LOCALSTATEDIR) < 0) + "%s/libvirt/qemu", RUNSTATEDIR) < 0) goto error; if (virAsprintf(&cfg->swtpmStateDir, - "%s/run/libvirt/qemu/swtpm", LOCALSTATEDIR) < 0) + "%s/libvirt/qemu/swtpm", RUNSTATEDIR) < 0) goto error; if (virAsprintf(&cfg->cacheDir, diff --git a/src/remote/libvirtd.pod b/src/remote/libvirtd.pod index 4721e0f4ec..4988f0f7fa 100644 --- a/src/remote/libvirtd.pod +++ b/src/remote/libvirtd.pod @@ -84,9 +84,9 @@ On receipt of B<SIGHUP> libvirtd will reload its configuration. The default configuration file used by libvirtd, unless overridden on the command line using the B<-f>|B<--config> option. -=item F<LOCALSTATEDIR/run/libvirt/libvirt-sock> +=item F<RUNSTATEDIR/libvirt/libvirt-sock> -=item F<LOCALSTATEDIR/run/libvirt/libvirt-sock-ro> +=item F<RUNSTATEDIR/libvirt/libvirt-sock-ro> The sockets libvirtd will use. @@ -102,7 +102,7 @@ The TLS B<Server> certificate libvirtd will use. The TLS B<Server> private key libvirtd will use. -=item F<LOCALSTATEDIR/run/libvirtd.pid> +=item F<RUNSTATEDIR/libvirtd.pid> The PID file to use, unless overridden by the B<-p>|B<--pid-file> option. @@ -154,8 +154,8 @@ To retrieve the version of libvirtd: To start libvirtd, instructing it to daemonize and create a PID file: # libvirtd -d - # ls -la LOCALSTATEDIR/run/libvirtd.pid - -rw-r--r-- 1 root root 6 Jul 9 02:40 LOCALSTATEDIR/run/libvirtd.pid + # ls -la RUNSTATEDIR/libvirtd.pid + -rw-r--r-- 1 root root 6 Jul 9 02:40 RUNSTATEDIR/libvirtd.pid # =head1 BUGS diff --git a/src/remote/remote_daemon.c b/src/remote/remote_daemon.c index 1138485870..3edc357fea 100644 --- a/src/remote/remote_daemon.c +++ b/src/remote/remote_daemon.c @@ -238,12 +238,12 @@ daemonUnixSocketPaths(struct daemonConfig *config, } } else { if (privileged) { - if (virAsprintf(sockfile, "%s/run/libvirt/%s-sock", - LOCALSTATEDIR, SOCK_PREFIX) < 0 || - virAsprintf(rosockfile, "%s/run/libvirt/%s-sock-ro", - LOCALSTATEDIR, SOCK_PREFIX) < 0 || - virAsprintf(admsockfile, "%s/run/libvirt/%s-admin-sock", - LOCALSTATEDIR, SOCK_PREFIX) < 0) + if (virAsprintf(sockfile, "%s/libvirt/%s-sock", + RUNSTATEDIR, SOCK_PREFIX) < 0 || + virAsprintf(rosockfile, "%s/libvirt/%s-sock-ro", + RUNSTATEDIR, SOCK_PREFIX) < 0 || + virAsprintf(admsockfile, "%s/libvirt/%s-admin-sock", + RUNSTATEDIR, SOCK_PREFIX) < 0) goto cleanup; } else { mode_t old_umask; @@ -945,11 +945,11 @@ daemonUsage(const char *argv0, bool privileged) fprintf(stderr, " %s\n", _("Sockets:")); fprintf(stderr, " %s/libvirt/%s-sock\n", - privileged ? LOCALSTATEDIR "/run" : "$XDG_RUNTIME_DIR", + privileged ? RUNSTATEDIR : "$XDG_RUNTIME_DIR", SOCK_PREFIX); if (privileged) - fprintf(stderr, " %s/run/libvirt/%s-sock-ro\n", - LOCALSTATEDIR, SOCK_PREFIX); + fprintf(stderr, " %s/libvirt/%s-sock-ro\n", + RUNSTATEDIR, SOCK_PREFIX); fprintf(stderr, "\n"); #ifdef WITH_IP @@ -969,7 +969,7 @@ daemonUsage(const char *argv0, bool privileged) fprintf(stderr, " %s\n", _("PID file (unless overridden by -p):")); fprintf(stderr, " %s/%s.pid\n", - privileged ? LOCALSTATEDIR "/run" : "$XDG_RUNTIME_DIR/libvirt", + privileged ? RUNSTATEDIR : "$XDG_RUNTIME_DIR/libvirt", DAEMON_NAME); fprintf(stderr, "\n"); } @@ -1149,7 +1149,7 @@ int main(int argc, char **argv) { if (!pid_file && virPidFileConstructPath(privileged, - LOCALSTATEDIR, + RUNSTATEDIR, DAEMON_NAME, &pid_file) < 0) { VIR_ERROR(_("Can't determine pid file path.")); @@ -1194,7 +1194,7 @@ int main(int argc, char **argv) { /* Ensure the rundir exists (on tmpfs on some systems) */ if (privileged) { - if (VIR_STRDUP_QUIET(run_dir, LOCALSTATEDIR "/run/libvirt") < 0) { + if (VIR_STRDUP_QUIET(run_dir, RUNSTATEDIR "/libvirt") < 0) { VIR_ERROR(_("Can't allocate memory")); goto cleanup; } diff --git a/src/remote/remote_daemon_dispatch.c b/src/remote/remote_daemon_dispatch.c index 1bd281dd6d..ffff90e848 100644 --- a/src/remote/remote_daemon_dispatch.c +++ b/src/remote/remote_daemon_dispatch.c @@ -2192,8 +2192,8 @@ remoteDispatchProbeURI(bool readonly, for (i = 0; i < (ssize_t) ARRAY_CARDINALITY(drivers) && !*probeduri; i++) { VIR_AUTOFREE(char *) sockname = NULL; - if (virAsprintf(&sockname, "%s/run/libvirt/virt%sd-%s", - LOCALSTATEDIR, drivers[i], + if (virAsprintf(&sockname, "%s/libvirt/virt%sd-%s", + RUNSTATEDIR, drivers[i], readonly ? "sock-ro" : "sock") < 0) return -1; diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index daac506672..ae72fd58fd 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -789,6 +789,12 @@ remoteGetUNIXSocketHelper(remoteDriverTransport transport, userdir, sock_prefix) < 0) return NULL; } else { + /* Intentionally do *NOT* use RUNSTATEDIR here. We might + * be connecting to a remote machine, and cannot assume + * the remote host has /run. The converse is ok though, + * any machine with /run will have a /var/run symlink. + * The portable option is to thus use $LOCALSTATEDIR/run + */ if (virAsprintf(&sockname, "%s/run/libvirt/%s-%s", LOCALSTATEDIR, sock_prefix, flags & VIR_DRV_OPEN_REMOTE_RO ? diff --git a/src/secret/secret_driver.c b/src/secret/secret_driver.c index 0d5ea05f56..7512a51c74 100644 --- a/src/secret/secret_driver.c +++ b/src/secret/secret_driver.c @@ -474,7 +474,7 @@ secretStateInitialize(bool privileged, "%s/libvirt/secrets", SYSCONFDIR) < 0) goto error; if (virAsprintf(&driver->stateDir, - "%s/run/libvirt/secrets", LOCALSTATEDIR) < 0) + "%s/libvirt/secrets", RUNSTATEDIR) < 0) goto error; } else { VIR_AUTOFREE(char *) rundir = NULL; diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c index 60c9b75980..deadfb7da0 100644 --- a/src/security/virt-aa-helper.c +++ b/src/security/virt-aa-helper.c @@ -1232,8 +1232,8 @@ get_files(vahControl * ctl) /* Unix socket for QEMU and swtpm to use */ virBufferAsprintf(&buf, - " \"/run/libvirt/qemu/swtpm/%s-swtpm.sock\" rw,\n", - shortName); + " \"%/libvirt/qemu/swtpm/%s-swtpm.sock\" rw,\n", + RUNSTATEDIR, shortName); /* Paths for swtpm to use: give it access to its state * directory, log, and PID files. */ @@ -1244,8 +1244,8 @@ get_files(vahControl * ctl) " \"%s/log/swtpm/libvirt/qemu/%s-swtpm.log\" a,\n", LOCALSTATEDIR, ctl->def->name); virBufferAsprintf(&buf, - " \"/run/libvirt/qemu/swtpm/%s-swtpm.pid\" rw,\n", - shortName); + " \"%s/libvirt/qemu/swtpm/%s-swtpm.pid\" rw,\n", + RUNSTATEDIR, shortName); VIR_FREE(shortName); break; @@ -1486,14 +1486,10 @@ main(int argc, char **argv) LOCALSTATEDIR, ctl->def->name); virBufferAsprintf(&buf, " \"%s/lib/libvirt/qemu/domain-%d-%.*s/*\" rw,\n", LOCALSTATEDIR, ctl->def->id, 20, ctl->def->name); - virBufferAsprintf(&buf, " \"%s/run/libvirt/**/%s.pid\" rwk,\n", - LOCALSTATEDIR, ctl->def->name); - virBufferAsprintf(&buf, " \"/run/libvirt/**/%s.pid\" rwk,\n", - ctl->def->name); - virBufferAsprintf(&buf, " \"%s/run/libvirt/**/*.tunnelmigrate.dest.%s\" rw,\n", - LOCALSTATEDIR, ctl->def->name); - virBufferAsprintf(&buf, " \"/run/libvirt/**/*.tunnelmigrate.dest.%s\" rw,\n", - ctl->def->name); + virBufferAsprintf(&buf, " \"%s/libvirt/**/%s.pid\" rwk,\n", + RUNSTATEDIR, ctl->def->name); + virBufferAsprintf(&buf, " \"%s/libvirt/**/*.tunnelmigrate.dest.%s\" rw,\n", + RUNSTATEDIR, ctl->def->name); } if (ctl->files) virBufferAdd(&buf, ctl->files, -1); diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index dfa654178b..78f1aa9aa2 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -273,7 +273,7 @@ storageStateInitialize(bool privileged, VIR_STRDUP(driver->autostartDir, SYSCONFDIR "/libvirt/storage/autostart") < 0 || VIR_STRDUP(driver->stateDir, - LOCALSTATEDIR "/run/libvirt/storage") < 0) + RUNSTATEDIR "/libvirt/storage") < 0) goto error; } else { configdir = virGetUserConfigDirectory(); diff --git a/src/util/virhostdev.c b/src/util/virhostdev.c index 6861b8a84e..a93c3f809f 100644 --- a/src/util/virhostdev.c +++ b/src/util/virhostdev.c @@ -41,7 +41,7 @@ VIR_LOG_INIT("util.hostdev"); -#define HOSTDEV_STATE_DIR LOCALSTATEDIR "/run/libvirt/hostdevmgr" +#define HOSTDEV_STATE_DIR RUNSTATEDIR "/libvirt/hostdevmgr" static virHostdevManagerPtr manager; /* global hostdev manager, never freed */ diff --git a/src/util/virpidfile.c b/src/util/virpidfile.c index 999bccbee4..a600cfc662 100644 --- a/src/util/virpidfile.c +++ b/src/util/virpidfile.c @@ -479,7 +479,7 @@ int virPidFileRelease(const char *dir, int virPidFileConstructPath(bool privileged, - const char *statedir, + const char *runstatedir, const char *progname, char **pidfile) { @@ -490,12 +490,12 @@ virPidFileConstructPath(bool privileged, * This is here just to allow calling this function with * statedir == NULL; of course only when !privileged. */ - if (!statedir) { + if (!runstatedir) { virReportError(VIR_ERR_INTERNAL_ERROR, - "%s", _("No statedir specified")); + "%s", _("No runstatedir specified")); return -1; } - if (virAsprintf(pidfile, "%s/run/%s.pid", statedir, progname) < 0) + if (virAsprintf(pidfile, "%s/%s.pid", runstatedir, progname) < 0) return -1; } else { if (!(rundir = virGetUserRuntimeDirectory())) diff --git a/src/util/virsystemd.c b/src/util/virsystemd.c index e75c5b835a..2efc0dd72c 100644 --- a/src/util/virsystemd.c +++ b/src/util/virsystemd.c @@ -749,29 +749,40 @@ virSystemdActivationInitFromMap(virSystemdActivationPtr act, goto error; } + VIR_DEBUG("Got socket family %d for FD %d", + addr.data.sa.sa_family, nextfd); + for (i = 0; i < nmap && !name; i++) { if (map[i].name == NULL) continue; if (addr.data.sa.sa_family == AF_INET) { - if (map[i].family == AF_INET && - addr.data.inet4.sin_port == htons(map[i].port)) - name = map[i].name; + if (map[i].family == AF_INET) { + VIR_DEBUG("Expect %d got %d", + map[i].port, ntohs(addr.data.inet4.sin_port)); + if (addr.data.inet4.sin_port == htons(map[i].port)) + name = map[i].name; + } } else if (addr.data.sa.sa_family == AF_INET6) { /* NB use of AF_INET here is correct. The "map" struct * only refers to AF_INET. The socket may be AF_INET * or AF_INET6 */ - if (map[i].family == AF_INET && - addr.data.inet6.sin6_port == htons(map[i].port)) - name = map[i].name; + if (map[i].family == AF_INET) { + VIR_DEBUG("Expect %d got %d", + map[i].port, ntohs(addr.data.inet6.sin6_port)); + if (addr.data.inet6.sin6_port == htons(map[i].port)) + name = map[i].name; + } #ifndef WIN32 } else if (addr.data.sa.sa_family == AF_UNIX) { - if (map[i].family == AF_UNIX && - STREQLEN(map[i].path, - addr.data.un.sun_path, - sizeof(addr.data.un.sun_path))) - name = map[i].name; + if (map[i].family == AF_UNIX) { + VIR_DEBUG("Expect %s got %s", map[i].path, addr.data.un.sun_path); + if (STREQLEN(map[i].path, + addr.data.un.sun_path, + sizeof(addr.data.un.sun_path))) + name = map[i].name; + } #endif } else { virReportError(VIR_ERR_INTERNAL_ERROR, diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c index da72b209d1..a4f6c39cb7 100644 --- a/src/vz/vz_driver.c +++ b/src/vz/vz_driver.c @@ -60,7 +60,7 @@ VIR_LOG_INIT("parallels.parallels_driver"); #define PRLCTL "prlctl" -#define VZ_STATEDIR LOCALSTATEDIR "/run/libvirt/vz" +#define VZ_STATEDIR RUNSTATEDIR "/libvirt/vz" static virClassPtr vzDriverClass; -- 2.21.0

On 8/21/19 1:50 PM, Daniel P. Berrangé wrote:
All code using LOCALSTATEDIR "/run" is updated to use RUNSTATEDIR instead. The exception is the remote driver client which still uses LOCALSTATEDIR "/run". The client needs to connect to remote machines which may not be using /run, so /var/run is more portable due to the /var/run -> /run symlink.
Some duplicate paths in the apparmor code are also purged.
There's no functional change by default yet since both expressions expand to the same value.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- src/bhyve/bhyve_utils.h | 2 +- src/interface/interface_backend_netcf.c | 2 +- src/interface/interface_backend_udev.c | 2 +- src/libvirt-admin.c | 2 +- src/libxl/libxl_conf.h | 2 +- src/locking/lock_daemon.c | 18 +++++++------- src/locking/lock_driver_lockd.c | 2 +- src/locking/virtlockd.pod | 8 +++--- src/logging/log_daemon.c | 18 +++++++------- src/logging/log_manager.c | 2 +- src/logging/virtlogd.pod | 8 +++--- src/lxc/lxc_conf.h | 2 +- src/lxc/lxc_process.c | 2 +- src/network/bridge_driver.c | 4 +-- src/network/leaseshelper.c | 2 +- src/node_device/node_device_hal.c | 2 +- src/node_device/node_device_udev.c | 2 +- src/nwfilter/nwfilter_dhcpsnoop.c | 4 +-- src/nwfilter/nwfilter_driver.c | 4 +-- src/qemu/qemu_conf.c | 4 +-- src/remote/libvirtd.pod | 10 ++++---- src/remote/remote_daemon.c | 24 +++++++++--------- src/remote/remote_daemon_dispatch.c | 4 +-- src/remote/remote_driver.c | 6 +++++ src/secret/secret_driver.c | 2 +- src/security/virt-aa-helper.c | 20 ++++++--------- src/storage/storage_driver.c | 2 +- src/util/virhostdev.c | 2 +- src/util/virpidfile.c | 8 +++--- src/util/virsystemd.c | 33 ++++++++++++++++--------- src/vz/vz_driver.c | 2 +- 31 files changed, 109 insertions(+), 96 deletions(-)
diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c index 60c9b75980..deadfb7da0 100644 --- a/src/security/virt-aa-helper.c +++ b/src/security/virt-aa-helper.c @@ -1232,8 +1232,8 @@ get_files(vahControl * ctl)
/* Unix socket for QEMU and swtpm to use */ virBufferAsprintf(&buf, - " \"/run/libvirt/qemu/swtpm/%s-swtpm.sock\" rw,\n", - shortName); + " \"%/libvirt/qemu/swtpm/%s-swtpm.sock\" rw,\n",
%s
+ RUNSTATEDIR, shortName); /* Paths for swtpm to use: give it access to its state * directory, log, and PID files. */
Michal

Many distros have moved /var/run to /run with the introduction of systemd. /var/run still exists as a symlink to /run, but its usage is deprecated. autoconf added a --runstatedir option back in 2013 but there's still no new release of autoconf that includes this. gnulib meanwhile added support to propagate this arg's value to configmake.h, but it falls back to $localstatedir/run for autoconf 2.69 and older, which is what every distro today has. To deal with this problem we add a --with-runstatedir arg that then sets the $runstatedir env variable that future autoconf's --runstatedir arg will also use. This finally enables $runstatedir to be pointed to /run. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- configure.ac | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/configure.ac b/configure.ac index f41c6d5d86..120312e4ca 100644 --- a/configure.ac +++ b/configure.ac @@ -129,6 +129,29 @@ if test -d $srcdir/.git && git --version >/dev/null 2>&1 ; then AB_VERSION=`cd $srcdir && git describe --match 'v[[0-9]]*' 2>/dev/null` fi +dnl autoconf 2.70 adds a --runstatedir option so that downstreams +dnl can point to /run instead of the historic /var/run, but +dnl autoconf hasn't had a release since 2012. +dnl +dnl gnulib sets configmake.h to include runstatedir, but sets +dnl it to $localstatedir/run if $runstatedir env var is not set +dnl which is useless for apps that need to use /run without +dnl waiting for autoconf 2.70 +dnl +dnl we introduce --with-runstatedir and then overwrite the +dnl value of $runstatedir so gnulib's configmake.h becomes useful +AC_ARG_WITH( + [runstatedir], + [AS_HELP_STRING( + [--with-runstatedir], + [State directory for temporary sockets, pid files, etc])]) + +if test -n "$with_runstatedir" +then + runstatedir=$with_runstatedir +fi + + gl_EARLY gl_INIT -- 2.21.0

Use the %{_rundir} RPM variable to set the configure runstatedir variable to /run. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- libvirt.spec.in | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/libvirt.spec.in b/libvirt.spec.in index ee4b408510..b7c6d845ef 100644 --- a/libvirt.spec.in +++ b/libvirt.spec.in @@ -1155,7 +1155,8 @@ export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/%{name}.spec) %endif rm -f po/stamp-po -%configure %{?arg_qemu} \ +%configure --with-runstatedir=%{_rundir} \ + %{?arg_qemu} \ %{?arg_openvz} \ %{?arg_lxc} \ %{?arg_vbox} \ @@ -1554,7 +1555,7 @@ exit 0 %config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd %dir %{_datadir}/libvirt/ -%ghost %dir %{_localstatedir}/run/libvirt/ +%ghost %dir %{_rundir}/libvirt/ %dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/images/ %dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/filesystems/ @@ -1632,7 +1633,7 @@ exit 0 %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/ %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/ %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/autostart -%ghost %dir %{_localstatedir}/run/libvirt/network/ +%ghost %dir %{_rundir}/libvirt/network/ %dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/network/ %dir %attr(0755, root, root) %{_localstatedir}/lib/libvirt/dnsmasq/ %attr(0755, root, root) %{_libexecdir}/libvirt_leaseshelper @@ -1663,7 +1664,7 @@ exit 0 %{_unitdir}/virtnwfilterd-admin.socket %attr(0755, root, root) %{_sbindir}/virtnwfilterd %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/nwfilter/ -%ghost %dir %{_localstatedir}/run/libvirt/network/ +%ghost %dir %{_rundir}/libvirt/network/ %{_libdir}/%{name}/connection-driver/libvirt_driver_nwfilter.so %files daemon-driver-secret @@ -1749,7 +1750,7 @@ exit 0 %config(noreplace) %{_sysconfdir}/libvirt/qemu.conf %config(noreplace) %{_sysconfdir}/libvirt/qemu-lockd.conf %config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.qemu -%ghost %dir %{_localstatedir}/run/libvirt/qemu/ +%ghost %dir %{_rundir}/libvirt/qemu/ %dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/ %dir %attr(0750, %{qemu_user}, %{qemu_group}) %{_localstatedir}/cache/libvirt/qemu/ %{_datadir}/augeas/lenses/libvirtd_qemu.aug @@ -1772,7 +1773,7 @@ exit 0 %dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/lxc/ %config(noreplace) %{_sysconfdir}/libvirt/lxc.conf %config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.lxc -%ghost %dir %{_localstatedir}/run/libvirt/lxc/ +%ghost %dir %{_rundir}/libvirt/lxc/ %dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/lxc/ %{_datadir}/augeas/lenses/libvirtd_lxc.aug %{_datadir}/augeas/lenses/tests/test_libvirtd_lxc.aug @@ -1796,7 +1797,7 @@ exit 0 %{_datadir}/augeas/lenses/libvirtd_libxl.aug %{_datadir}/augeas/lenses/tests/test_libvirtd_libxl.aug %dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/libxl/ -%ghost %dir %{_localstatedir}/run/libvirt/libxl/ +%ghost %dir %{_rundir}/libvirt/libxl/ %dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/libxl/ %{_libdir}/%{name}/connection-driver/libvirt_driver_libxl.so %endif -- 2.21.0
participants (2)
-
Daniel P. Berrangé
-
Michal Privoznik