• B
    cgroup: unavailable controller prevents controller disabling · dfcfe0bb
    Boris Fiuczynski 提交于
    The cgroup controller filtering in virCgroupDetect does not work
    properly if the following conditions are met:
    1) the host system does not have a cgroup controller which
    libvirt requests (unavailable controller) and
    2) libvirt is configured to disable a controller (disabled controller) and
    3) the disabled controller is located before the unavailable controller
    in virCgroupController.
    
    As an example: The memory controller is unavailable and the cpuset
    controller is configured to be disabled.
    In this scenario trying to start a domain results in the error
    error: Controller 'cpuset' is not wanted, but 'memory' is co-mounted: Invalid argument
    
    This error occurs when virCgroupDetect is called with a valid parent group.
    The resulting group created by virCgroupCopyMounts holds for cpuset and
    memory controller empty mount points. The filtering of disabled controllers
    checks for co-mounts by comparing the mount points. The cpuset controller
    causes the filtering to occur before the memory controller is marked as to be
    ignored by modifying the controller mask since it is unavailable.
    Therefore the co-mount detection logic compares the cpuset and memory controller
    mount points and since both are empty the memory controller is regarded
    erroneously as being co-mounted.
    Signed-off-by: NBoris Fiuczynski <fiuczy@linux.vnet.ibm.com>
    Reviewed-by: NMarc Hartmayer <mhartmay@linux.vnet.ibm.com>
    Reviewed-by: NBjoern Walk <bwalk@linux.vnet.ibm.com>
    Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
    dfcfe0bb
vircgroup.c 133.1 KB