[Pkg-libvirt-maintainers] Bug#931243: libvirt0: does not work under cgroup v2 (and rtkit)

Ryutaroh Matsumoto ryutaroh.matsumoto at nagoya-u.jp
Sat Jun 29 05:40:15 BST 2019


Package: libvirt0
Version: 5.0.0-4
Severity: important
Tags: patch upstream

Dear Maintainer,

* libvirt0 tries to add "cpu" controller under the cgroup v2
  (a.k.a. unified cgroup hierarchy), which can be enabled by
  "systemd.unified_cgroup_hierarchy=1" boot option in /etc/default/grub

* The cpu controller cannot be enabled if there exists a process
  with the realtime priority, as stated
WARNING: cgroup2 doesn't yet support control of realtime processes and
the cpu controller can only be enabled when all RT processes are in
the root cgroup.  Be aware that system management software may already
have placed RT processes into nonroot cgroups during the system boot
process, and these processes may need to be moved to the root cgroup
before the cpu controller can be enabled.

at https://www.kernel.org/doc/Documentation/cgroup-v2.txt

* If a user installs "pulseaudio", which is true for almost all
  desktop environments, then "rtkit" is also installed and
  "pulseaudio" runs in the realtime priority.

Under the above situation, when a user runs "virsh" or "virt-manager"
or something like that, he/she gets the error message

Invalid value '+cpu' for 'cgroup.subtree_control': Invalid argument

and cannot use an application relying on libvirt0. It is also
reported at https://unix.stackexchange.com/questions/525498/libvirt-will-not-start-vms-with-error-invalid-value-cpu-for-cgroup-subtree

Temporary workaround 1: apt-get remove rtkit

Temporary workaround 2: Use the following patch

--- libvirt-5.0.0/src/util/vircgroup.c-orig	2019-06-29 12:57:39.959731576 +0900
+++ libvirt-5.0.0/src/util/vircgroup.c	2019-06-29 12:58:57.858871856 +0900
@@ -1268,6 +1268,7 @@
 {
     if (virLastErrorIsSystemErrno(ENXIO) ||
         virLastErrorIsSystemErrno(EPERM) ||
+	virLastErrorIsSystemErrno(EINVAL) ||
         virLastErrorIsSystemErrno(EACCES)) {
         virResetLastError();
         VIR_DEBUG("No cgroups present/configured/accessible, ignoring error");

A right solution:
An application should not try to enable the cpu controller in
cgroup v2, as instructed at https://github.com/systemd/systemd/blob/master/docs/CGROUP_DELEGATION.md

So a right solution is to stop touching "cgroup.subtree_control". It is also
discussed in the upstream as
https://github.com/libvirt/libvirt/commit/62dd4d25a2bc5ee33ed22728dc79a5da99906748

Best regards,
Ryutaroh Matsumoto


-- System Information:
Debian Release: 10.0
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 4.19.0-5-amd64 (SMP w/4 CPU cores)
Locale: LANG=ja_JP.UTF-8, LC_CTYPE=ja_JP.UTF-8 (charmap=UTF-8), LANGUAGE=ja_JP.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages libvirt0 depends on:
ii  libacl1             2.2.53-4
ii  libapparmor1        2.13.2-10
ii  libaudit1           1:2.8.4-3
pn  libavahi-client3    <none>
ii  libavahi-common3    0.7-4+b1
ii  libc6               2.28-10
ii  libcap-ng0          0.7.9-2
ii  libcurl3-gnutls     7.64.0-4
ii  libdbus-1-3         1.12.16-1
ii  libdevmapper1.02.1  2:1.02.155-3
ii  libgcc1             1:8.3.0-6
ii  libgnutls30         3.6.7-4
ii  libnl-3-200         3.4.0-1
ii  libnl-route-3-200   3.4.0-1
ii  libnuma1            2.0.12-1
ii  libsasl2-2          2.1.27+dfsg-1
ii  libselinux1         2.8-1+b1
ii  libssh2-1           1.8.0-2.1
ii  libxml2             2.9.4+dfsg1-7+b3
ii  libyajl2            2.1.0-3

Versions of packages libvirt0 recommends:
ii  lvm2  2.03.02-3

libvirt0 suggests no packages.

-- no debconf information



More information about the Pkg-libvirt-maintainers mailing list