libvirt/src/util
Michal Privoznik c159db4cc0 vircgroup: Improve virCgroupControllerAvailable wrt to CGroupsV2
It all started as a simple bug: trying to move domain memory
between NUMA nodes (e.g. via virsh numatune) did not work. I've
traced the problem to qemuProcessHook() because that's where we
decide whether to rely on CGroups or use numactl APIs to satisfy
<numatune/>. The problem was that virCgroupControllerAvailable()
was telling us that cpuset controller is unavailable. This is
CGroupsV2, and pretty weird because CGroupsV2 definitely do
support cpuset controller and I had them mounted in a standard
way. What I found out (with Pavel's help) was that
virCgroupNewSelf() was looking into the following path to detect
supported controllers:

  /sys/fs/cgroup/system.slice/cgroup.controllers

However, if there's no other VM running then the system.slice
only has 'memory' and 'pids' controllers. Therefore, we saw
'cpuset' as not available. The fix is to look at the top most
path, which has the full set of controllers:

  /sys/fs/cgroup/cgroup.controllers

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1976690
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
2021-07-09 09:05:08 +02:00
..
glibcompat.c src: ensure GSource background unref happens in correct event loop 2021-03-17 09:16:05 +00:00
glibcompat.h src: ensure GSource background unref happens in correct event loop 2021-03-17 09:16:05 +00:00
iohelper.c util: iohelper: Don't handle OOM from posix_memalign 2021-03-02 09:50:19 +01:00
meson.build meson: tools: depend on keycode generated sources 2021-03-05 20:05:54 +04:00
viralloc.c util: Make virReallocN return void 2021-03-22 12:44:18 +01:00
viralloc.h util: Make virReallocN return void 2021-03-22 12:44:18 +01:00
virarch.c util: add a virArchFromHost() impl for Windows 2020-01-29 14:51:39 +00:00
virarch.h util: add ARCH_IS_MIPS64 helper macro 2020-11-20 12:09:51 +00:00
virarptable.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virarptable.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
viraudit.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
viraudit.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virauth.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virauth.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virauthconfig.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virauthconfig.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virbitmap.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virbitmap.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virbpf.c lib: Prefer WITH_* prefix for #if conditionals 2020-09-02 10:28:10 +02:00
virbpf.h lib: Prefer WITH_* prefix for #if conditionals 2020-09-02 10:28:10 +02:00
virbuffer.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virbuffer.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
vircgroup.c vircgroup: Improve virCgroupControllerAvailable wrt to CGroupsV2 2021-07-09 09:05:08 +02:00
vircgroup.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
vircgroupbackend.c vircgroupbackend: Extend error messages in VIR_CGROUP_BACKEND_CALL() 2021-04-19 11:21:40 +02:00
vircgroupbackend.h vircgroupbackend: Extend error messages in VIR_CGROUP_BACKEND_CALL() 2021-04-19 11:21:40 +02:00
vircgrouppriv.h vircgroup: Fix virCgroupKillRecursive() wrt nested controllers 2021-04-19 11:21:40 +02:00
vircgroupv1.c vircgroup: Fix virCgroupKillRecursive() wrt nested controllers 2021-04-19 11:21:40 +02:00
vircgroupv1.h
vircgroupv2.c vircgroup: Fix virCgroupKillRecursive() wrt nested controllers 2021-04-19 11:21:40 +02:00
vircgroupv2.h
vircgroupv2devices.c vircgroupv2devices: refactor virCgroupV2DevicesRemoveProg 2021-04-14 12:06:16 +02:00
vircgroupv2devices.h vircgroupv2devices: refactor virCgroupV2DevicesRemoveProg 2021-04-14 12:06:16 +02:00
vircommand.c util: command: Introduce virCommandToStringBuf 2021-06-15 16:27:35 +02:00
vircommand.h util: command: Introduce virCommandToStringBuf 2021-06-15 16:27:35 +02:00
vircommandpriv.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virconf.c Remove static analysis assertions 2021-05-24 20:26:20 +02:00
virconf.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
vircrypto.c virCryptoEncryptDataAESgnutls: Use virSecureErase instead of memset 2021-02-03 13:07:13 +01:00
vircrypto.h
virdaemon.c lib: Replace virFileMakePath() with g_mkdir_with_parents() 2021-03-04 20:52:23 +01:00
virdaemon.h util: introduce shared daemon startup code 2020-03-27 16:22:49 +01:00
virdevmapper.c virDevMapperGetTargetsImpl: Use correct length when copying into dm.name 2021-03-08 12:16:13 +01:00
virdevmapper.h util: Move virIsDevMapperDevice() to virdevmapper.c 2020-06-15 14:50:46 +02:00
virdnsmasq.c virdnsmasq: remove binaryPath argument from dnsmasqCapsNewFromBinary 2021-04-21 14:18:31 +02:00
virdnsmasq.h virdnsmasq: remove binaryPath argument from dnsmasqCapsNewFromBinary 2021-04-21 14:18:31 +02:00
virebtables.c util: replace VIR_FREE with g_free in all vir*Free() functions 2021-02-05 00:20:43 -05:00
virebtables.h
virendian.h
virenum.c
virenum.h src: replace verify(expr) with G_STATIC_ASSERT(expr) 2020-01-17 10:02:01 +00:00
virerror.c Add basic driver for the Cloud-Hypervisor 2021-06-04 10:56:06 +01:00
virerror.h util: virerror: Remove VIR_ERROR_MAX_LENGTH macro 2021-03-05 15:01:29 +01:00
virerrorpriv.h
virevent.c util: event: check return value of virInitialize 2020-09-23 13:26:34 +02:00
virevent.h event: add API for requiring an event loop impl to be registered 2019-12-18 14:04:59 +00:00
vireventglib.c src: ensure GSource background unref happens in correct event loop 2021-03-17 09:16:05 +00:00
vireventglib.h util: import an event loop impl based on GMainContext 2020-02-07 15:03:53 +00:00
vireventglibwatch.c util: keep track of full GSource object not source ID number 2020-08-07 12:43:56 +01:00
vireventglibwatch.h util: keep track of full GSource object not source ID number 2020-08-07 12:43:56 +01:00
vireventthread.c util: do not unref event thread after joining it 2020-09-23 17:06:36 +02:00
vireventthread.h src: introduce an abstraction for running event loops 2020-03-11 14:44:04 +00:00
virfcp.c virBuildPath: Remove return value 2021-03-02 09:50:19 +01:00
virfcp.h
virfdstream.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virfdstream.h
virfile.c virFindFileInPath: Don't pass NULL to g_canonicalize_filename() 2021-06-15 21:14:03 +02:00
virfile.h Replace virFileAbsPath() with g_canonicalize_filename() 2021-06-15 12:42:02 +02:00
virfilecache.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virfilecache.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virfirewall.c virfirewall: use virFindFileInPath instead of virFileIsExecutable 2021-04-21 14:18:39 +02:00
virfirewall.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virfirewalld.c util: firewall: use g_new0 2020-10-06 12:31:34 +02:00
virfirewalld.h
virfirewalldpriv.h
virfirewallpriv.h
virfirmware.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virfirmware.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virgdbus.c virgdbus: fix getting non-shared DBus connection 2020-11-09 23:42:33 +01:00
virgdbus.h virgdbus: add DBus reply format check 2020-09-23 12:53:31 +02:00
virgettext.c lib: Prefer WITH_* prefix for #if conditionals 2020-09-02 10:28:10 +02:00
virgettext.h
virgic.c Remove virutil.h where possible 2020-02-24 23:15:49 +01:00
virgic.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virglibutil.c util: Add helpers for auto-freeing GSList filled with strings 2021-02-11 17:05:32 +01:00
virglibutil.h util: Add helpers for auto-freeing GSList filled with strings 2021-02-11 17:05:32 +01:00
virhash.c Fix spelling 2021-04-15 15:42:21 +02:00
virhash.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virhashcode.c Prefer https: everywhere where possible 2020-09-01 21:58:46 +02:00
virhashcode.h Prefer https: everywhere where possible 2020-09-01 21:58:46 +02:00
virhook.c virBuildPath: Remove return value 2021-03-02 09:50:19 +01:00
virhook.h bhyve: add hooks 2020-02-24 17:25:07 +00:00
virhostcpu.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virhostcpu.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virhostcpupriv.h hostcpu: Introduce virHostCPUGetSignature 2020-05-25 16:09:41 +02:00
virhostmem.c Remove static analysis assertions 2021-05-24 20:26:20 +02:00
virhostmem.h
virhostuptime.c virhostuptime: Fix rounding in uptime calculation 2021-02-02 15:00:55 +01:00
virhostuptime.h virhostuptime: Introduce virHostBootTimeInit() 2020-01-07 17:00:10 +01:00
viridentity.c viridentity: Fix ref/unref imbalance in VIR_IDENTITY_AUTORESTORE 2021-05-17 21:06:15 +02:00
viridentity.h src: add API to determine if current identity is a system identity 2021-05-13 11:07:40 +01:00
viridentitypriv.h util: generate a persistent system token 2021-05-13 11:07:16 +01:00
virinitctl.c src: replace verify(expr) with G_STATIC_ASSERT(expr) 2020-01-17 10:02:01 +00:00
virinitctl.h
viriptables.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
viriptables.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
viriscsi.c
viriscsi.h
virjson.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virjson.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virkeycode.c Split declarations from initializations 2020-08-25 19:03:11 +02:00
virkeycode.h Remove virutil.h from all header files 2020-02-24 23:15:50 +01:00
virkmod.c util: rename method to virKModIsProhibited 2020-06-26 15:39:33 +01:00
virkmod.h util: rename method to virKModIsProhibited 2020-06-26 15:39:33 +01:00
virlease.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virlease.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virlockspace.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virlockspace.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virlog.c Replace virFileAbsPath() with g_canonicalize_filename() 2021-06-15 12:42:02 +02:00
virlog.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virmacaddr.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virmacaddr.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virmacmap.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virmacmap.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virmdev.c nodedev: refactor virMediatedDeviceGetIOMMUGroupNum() 2021-04-15 08:51:37 -05:00
virmdev.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virmodule.c lib: Prefer WITH_* prefix for #if conditionals 2020-09-02 10:28:10 +02:00
virmodule.h
virnetdev.c Drop magic comments for coverity 2021-05-24 20:26:20 +02:00
virnetdev.h virnetdev: move virNetDevSetRootQDisc to virnetdevbandwidth 2021-04-21 14:19:34 +02:00
virnetdevbandwidth.c virnetdev: move virNetDevSetRootQDisc to virnetdevbandwidth 2021-04-21 14:19:34 +02:00
virnetdevbandwidth.h virnetdev: move virNetDevSetRootQDisc to virnetdevbandwidth 2021-04-21 14:19:34 +02:00
virnetdevbridge.c meson: Drop netinet workaround 2021-06-01 14:30:39 +02:00
virnetdevbridge.h util: query/set BR_ISOLATED flag on netdevs attached to bridge 2020-02-20 23:07:53 -05:00
virnetdevip.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetdevip.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetdevmacvlan.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetdevmacvlan.h netdevmacvlan: Use helper function to create unique macvlan/macvtap name 2020-12-15 13:35:33 -05:00
virnetdevmidonet.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetdevmidonet.h
virnetdevopenvswitch.c openvswitch: don't delete existing OVS port prior to recreating same port 2021-06-10 01:23:47 -04:00
virnetdevopenvswitch.h virnetdevopenvswitch: Remove redundant declaration 2021-05-20 11:30:01 +02:00
virnetdevtap.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetdevtap.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetdevveth.c util:veth: Create veth device pair by netlink 2020-12-16 14:43:18 -05:00
virnetdevveth.h
virnetdevvlan.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetdevvlan.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetdevvportprofile.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetdevvportprofile.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetlink.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetlink.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnodesuspend.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnodesuspend.h
virnuma.c conf, docs, schema: Add support for 'restrictive' mode in numatune 2021-04-19 11:39:13 +02:00
virnuma.h virnuma: Export virNumaGetMaxCPUs properly 2021-05-17 15:54:13 +02:00
virnvme.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnvme.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virobject.c Remove static analysis assertions 2021-05-24 20:26:20 +02:00
virobject.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virpci.c Fix spelling 2021-04-15 15:42:21 +02:00
virpci.h conf: Use virTristateXXX in virPCIDeviceAddress 2021-04-16 09:48:42 +02:00
virperf.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virperf.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virpidfile.c lib: Replace virFileMakePath() with g_mkdir_with_parents() 2021-03-04 20:52:23 +01:00
virpidfile.h
virpolkit.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virpolkit.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virportallocator.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virportallocator.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virprobe.h
virprocess.c Drop magic comments for coverity 2021-05-24 20:26:20 +02:00
virprocess.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virqemu.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virqemu.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virrandom.c util: add virRandomToken API 2021-05-13 11:07:13 +01:00
virrandom.h util: add virRandomToken API 2021-05-13 11:07:13 +01:00
virresctrl.c virresctrl: Fix updating the mask for a cache resource 2021-07-07 16:19:40 +02:00
virresctrl.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virresctrlpriv.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virrotatingfile.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virrotatingfile.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virscsi.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virscsi.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virscsihost.c util: quieten virSCSIHostGetUniqueId 2020-11-06 15:03:39 +01:00
virscsihost.h
virscsivhost.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virscsivhost.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virseclabel.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virseclabel.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virsecret.c secret: rework handling of private secrets 2021-05-13 11:07:47 +01:00
virsecret.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virsecureerase.c util: virsecureerase: Introduce virSecureEraseString 2021-02-03 13:07:13 +01:00
virsecureerase.h util: virsecureerase: Introduce virSecureEraseString 2021-02-03 13:07:13 +01:00
virsocket.c util: Fix file descriptor passing on 64-bit FreeBSD and NetBSD. 2021-02-17 10:15:33 +00:00
virsocket.h gnulib: delete all gnulib integration 2020-02-07 15:03:54 +00:00
virsocketaddr.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virsocketaddr.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virstoragefile.c virStorageFileParseBackingStoreStr: use g_strsplit instead of virStringSplitCount 2021-04-12 15:55:09 +02:00
virstoragefile.h Remove virStorageFileCanonicalizePath 2021-04-12 15:55:09 +02:00
virstring.c util: virstring: Remove the virStringSplitCount wrapper funcion 2021-04-12 15:55:10 +02:00
virstring.h util: virstring: Remove the virStringSplitCount wrapper funcion 2021-04-12 15:55:10 +02:00
virsysinfo.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virsysinfo.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virsysinfopriv.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virsystemd.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virsystemd.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virsystemdpriv.h
virthread.c virthread: Make sure virOnce() returns -1 on error 2021-05-07 12:33:58 +02:00
virthread.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virthreadjob.c
virthreadjob.h
virthreadpool.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virthreadpool.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virtime.c util: o-z: use g_new0 2020-10-06 12:31:34 +02:00
virtime.h
virtpm.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virtpm.h
virtypedparam-public.c Do not check return value of VIR_RESIZE_N 2021-03-22 12:44:18 +01:00
virtypedparam.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virtypedparam.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
viruri.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
viruri.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virusb.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virusb.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virutil.c virSetUIDGIDWithCaps: Assume PR_CAPBSET_DROP is always defined 2021-07-01 16:41:50 +02:00
virutil.h virIndexToDiskName: Make 'idx' unsigned and remove check 2021-03-05 15:33:34 +01:00
viruuid.c viruuid: Rework virUUIDIsValid() 2020-12-04 16:24:19 +01:00
viruuid.h viruuid: Rework virUUIDIsValid() 2020-12-04 16:24:19 +01:00
virvhba.c remove unnecessary cleanup labels and unused return variables 2020-11-02 22:01:36 -05:00
virvhba.h
virvsock.c lib: Prefer WITH_* prefix for #if conditionals 2020-09-02 10:28:10 +02:00
virvsock.h
virxdrdefs.h src: remove all traces of Cygwin support 2020-01-29 14:51:40 +00:00
virxml.c virxml: Avoid double indentation of <metadata/> element 2021-05-25 13:17:22 +02:00
virxml.h virxml: Introduce and use virXMLFormatMetadata() 2021-05-25 13:17:22 +02:00