[libvirt] [PATCH] rpm: explicitly enable & start virlockd/virtlogd sockets on install

Daniel P. Berrange berrange at redhat.com
Mon Dec 7 12:55:13 UTC 2015


When installing the libvirt-daemon RPM, we have a %post rule to
enable the libvirtd.service, virtlockd.socket and virtlogd.socket
files. This is only done, however, when the RPM is first installed,
not when upgrading RPMs.

This adds a separate rule to explicitly enable the virtlockd.socket
and virtlogd.socket units upon RPM upgrade, if libvirtd.service
is marked as enabled.  It also adds a rule to start the socket
units if libvirtd.service is running.

The downside with taking this approach is that it is impossible
for a user to have libvirtd.service enabled and disable socket
activation, because we'll re-enable it on every upgrade. Similarly
we'll be starting the socket listeners on every upgrade if libvirtd
is running. This is a pretty nasty thing to have to keep in libvirt
for the long term, given this upgrade problem is a one-time only
pain point.

For this reason I am recommending *NOT* applying this patch to GIT.

Instead, I think we just have to release note the fact that after
upgrading you should enable the virtlockd.socket unit.

---
 libvirt.spec.in | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/libvirt.spec.in b/libvirt.spec.in
index 1f76f24..48e5632 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -1703,6 +1703,18 @@ if [ $1 -eq 1 ] ; then
         libvirtd.service >/dev/null 2>&1 || :
 fi
         %endif
+
+# In upgrade scenario we must explicitly enable virtlockd/virtlogd
+# sockets, if libvirtd is already enabled and start them if
+# libvirtd is running, otherwise you'll get failures to start
+# guests
+if [ $1 -ge 1 ] ; then
+    /bin/systemctl is-enabled libvirtd.service 1>/dev/null 2>&1 &&
+        /bin/systemctl enable virtlockd.socket virtlogd.socket
+    /bin/systemctl is-active libvirtd.service 1>/dev/null 2>&1  &&
+        /bin/systemctl start virtlockd.socket virtlogd.socket
+fi
+
     %else
         %if %{with_cgconfig}
 # Starting with Fedora 16/RHEL-7, systemd automounts all cgroups,
-- 
2.5.0




More information about the libvir-list mailing list