Systemd/src/basic
Lennart Poettering 27adcc9737 cgroup: be more careful with which controllers we can enable/disable on a cgroup
This changes cg_enable_everywhere() to return which controllers are
enabled for the specified cgroup. This information is then used to
correctly track the enablement mask currently in effect for a unit.
Moreover, when we try to turn off a controller, and this works, then
this is indicates that the parent unit might succesfully turn it off
now, too as our unit might have kept it busy.

So far, when realizing cgroups, i.e. when syncing up the kernel
representation of relevant cgroups with our own idea we would strictly
work from the root to the leaves. This is generally a good approach, as
when controllers are enabled this has to happen in root-to-leaves order.
However, when controllers are disabled this has to happen in the
opposite order: in leaves-to-root order (this is because controllers can
only be enabled in a child if it is already enabled in the parent, and
if it shall be disabled in the parent then it has to be disabled in the
child first, otherwise it is considered busy when it is attempted to
remove it in the parent).

To make things complicated when invalidating a unit's cgroup membershup
systemd can actually turn off some controllers previously turned on at
the very same time as it turns on other controllers previously turned
off. In such a case we have to work up leaves-to-root *and*
root-to-leaves right after each other. With this patch this is
implemented: we still generally operate root-to-leaves, but as soon as
we noticed we successfully turned off a controller previously turned on
for a cgroup we'll re-enqueue the cgroup realization for all parents of
a unit, thus implementing leaves-to-root where necessary.
2018-11-23 13:41:37 +01:00
..
MurmurHash2.c tree-wide: fix a couple of TABs 2018-05-22 16:13:45 +02:00
MurmurHash2.h tree-wide: use '#pragma once' for header guard 2018-08-30 06:10:43 +03:00
af-list.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
af-list.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
af-to-name.awk meson: also indent scripts with 8 spaces 2017-04-25 08:49:16 -04:00
alloc-util.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
alloc-util.h alloc-util: add alloca() counterparts for memdup() and memdup_suffix0() 2018-10-15 19:35:00 +02:00
architecture.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
architecture.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
arphrd-list.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
arphrd-list.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
arphrd-to-name.awk meson: also indent scripts with 8 spaces 2017-04-25 08:49:16 -04:00
async.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
async.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
audit-util.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
audit-util.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
blockdev-util.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
blockdev-util.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
btrfs-ctree.h btrfs: Include missing.h in btrfs-ctree.h 2017-12-18 11:19:32 +01:00
btrfs-util.c btrfs-util: before deleting a subvol check that it is one 2018-11-08 09:52:16 +01:00
btrfs-util.h btrfs-util: introduce btrfs_subvol_make_fd() 2018-07-30 15:54:03 +02:00
build.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
bus-label.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
bus-label.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
cap-list.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
cap-list.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
cap-to-name.awk meson: also indent scripts with 8 spaces 2017-04-25 08:49:16 -04:00
capability-util.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
capability-util.h capability: introduce CAP_TO_MASK_CORRECTED() macro replacing CAP_TO_MASK() 2018-10-10 11:11:48 +02:00
cgroup-util.c cgroup: be more careful with which controllers we can enable/disable on a cgroup 2018-11-23 13:41:37 +01:00
cgroup-util.h cgroup: be more careful with which controllers we can enable/disable on a cgroup 2018-11-23 13:41:37 +01:00
chattr-util.c chattr: optionally, return the old flags when updating them 2018-10-08 21:40:44 +02:00
chattr-util.h chattr: optionally, return the old flags when updating them 2018-10-08 21:40:44 +02:00
conf-files.c Split out pretty-print.c and move pager.c and main-func.h to shared/ 2018-11-20 18:40:02 +01:00
conf-files.h Split out pretty-print.c and move pager.c and main-func.h to shared/ 2018-11-20 18:40:02 +01:00
copy.c tree-wide: replace 'unsigned int' with 'unsigned' 2018-10-19 22:19:12 +02:00
copy.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
def.h Move LONG_LINE_MAX definition to fileio.h 2018-11-14 16:25:32 +01:00
device-nodes.c tree-wide: drop copyright headers from frequent contributors 2018-06-20 11:58:53 +02:00
device-nodes.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
dirent-util.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
dirent-util.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
env-util.c core: rework serialization 2018-10-26 10:52:41 +02:00
env-util.h core: rework serialization 2018-10-26 10:52:41 +02:00
errno-list.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
errno-list.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
errno-to-name.awk meson: also indent scripts with 8 spaces 2017-04-25 08:49:16 -04:00
escape.c basic: remove an assertion from cunescape_one 2018-11-16 08:45:16 +01:00
escape.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
ether-addr-util.c tree-wide: drop copyright headers from frequent contributors 2018-06-20 11:58:53 +02:00
ether-addr-util.h tree-wide: drop double newline 2018-06-29 11:02:17 +09:00
extract-word.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
extract-word.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
fd-util.c fd-util: optimize fd_get_path() a bit 2018-10-25 21:37:14 +02:00
fd-util.h resolve: treat some icmp errors as disconnected 2018-08-06 09:57:00 +02:00
fileio.c coccinelle: make use of SYNTHETIC_ERRNO 2018-11-22 10:54:38 +01:00
fileio.h Merge pull request #10742 from poettering/c-utf8 2018-11-15 12:47:17 +01:00
format-util.h tree-wide: drop double newline 2018-06-29 11:02:17 +09:00
fs-util.c fs-util: increase start buffer size in readlinkat_malloc() 2018-10-25 21:37:14 +02:00
fs-util.h add new systemd-bless-boot.service that marks boots as successful 2018-10-19 22:34:50 +02:00
gcrypt-util.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
gcrypt-util.h Drop my copyright headers 2018-06-14 13:03:20 +02:00
generate-af-list.sh generate-af-list.sh: slightly generalize pattern, fix w/musl (#8629) 2018-03-31 12:55:45 +02:00
generate-arphrd-list.sh separate flags from shebang 2017-12-25 19:48:49 +01:00
generate-cap-list.sh separate flags from shebang 2017-12-25 19:48:49 +01:00
generate-errno-list.sh separate flags from shebang 2017-12-25 19:48:49 +01:00
generate-gperfs.py tree-wide: adjust fall through comments so that gcc is happy 2017-11-20 13:06:25 -08:00
generate-socket-protocol-list.sh separate flags from shebang 2017-12-25 19:48:49 +01:00
glob-util.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
glob-util.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
gunicode.c tree-wide: beautify remaining copyright statements 2018-06-14 10:20:21 +02:00
gunicode.h tree-wide: beautify remaining copyright statements 2018-06-14 10:20:21 +02:00
hash-funcs.c tree-wide: Convert compare_func's to use CMP() macro wherever possible. 2018-08-06 19:26:35 -07:00
hash-funcs.h tree-wide: drop double newline 2018-06-29 11:02:17 +09:00
hashmap.c hashmap: introduce hashmap_first_key_and_value() and friends 2018-10-13 21:45:50 +09:00
hashmap.h hashmap: introduce hashmap_first_key_and_value() and friends 2018-10-13 21:45:50 +09:00
hexdecoct.c basic/hexdecoct: check for overflow 2018-10-02 12:54:00 +02:00
hexdecoct.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
hostname-util.c Move LONG_LINE_MAX definition to fileio.h 2018-11-14 16:25:32 +01:00
hostname-util.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
in-addr-util.c in-addr-util: make in_addr_default_prefix_from_string() or friend set 0 to prefixlen when family == AF_INET6 (#10665) 2018-11-07 15:31:26 +09:00
in-addr-util.h util: specify the maximum-size element when initialize union 2018-11-12 00:36:01 +09:00
io-util.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
io-util.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
ioprio.h Restore naming of IOPRIO_PRIO defines from linux/ioprio.h 2018-03-21 00:46:22 +01:00
khash.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
khash.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
label.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
label.h basic/label: introduce mkdirat_label()/mkdirat_errno_wrapper() helpers 2018-07-30 15:54:03 +02:00
list.h list: fix double avaluation in LIST_APPEND() 2018-10-17 21:13:02 +02:00
locale-util.c locale-util: add special glyph support for check marks/cross marks 2018-11-16 15:52:22 +01:00
locale-util.h locale-util: add special glyph support for check marks/cross marks 2018-11-16 15:52:22 +01:00
log.c basic/log: add concept of "synthethic errnos" 2018-11-22 10:45:08 +01:00
log.h basic/log: add note about operator precendence 2018-11-22 10:56:43 +01:00
login-util.c Drop my copyright headers 2018-06-14 13:03:20 +02:00
login-util.h Drop my copyright headers 2018-06-14 13:03:20 +02:00
macro.h libudev: introduce return_with_errno() and use it where applicable 2018-11-22 23:49:55 +09:00
memfd-util.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
memfd-util.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
mempool.c mempool: only enable mempool use when linked to libsystemd-shared.so 2018-10-11 11:10:37 +02:00
mempool.h mempool: only enable mempool use when linked to libsystemd-shared.so 2018-10-11 11:10:37 +02:00
meson.build Split out pretty-print.c and move pager.c and main-func.h to shared/ 2018-11-20 18:40:02 +01:00
missing.h basic/missing: drop _ETHTOOL_LINK_MODE_MAX 2018-11-18 16:14:21 +01:00
missing_syscall.h Drop my copyright headers 2018-06-14 13:03:20 +02:00
mkdir-label.c basic/label: introduce mkdirat_label()/mkdirat_errno_wrapper() helpers 2018-07-30 15:54:03 +02:00
mkdir.c basic/label: introduce mkdirat_label()/mkdirat_errno_wrapper() helpers 2018-07-30 15:54:03 +02:00
mkdir.h basic/label: introduce mkdirat_label()/mkdirat_errno_wrapper() helpers 2018-07-30 15:54:03 +02:00
mount-util.c Move LONG_LINE_MAX definition to fileio.h 2018-11-14 16:25:32 +01:00
mount-util.h libudev-monitor: rename udev_has_devtmpfs() and move it to mount-util.c 2018-09-11 12:45:21 +09:00
nss-util.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
ordered-set.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
ordered-set.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
parse-util.c trivial: fix spelling in code comments 2018-09-30 21:32:33 +02:00
parse-util.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
path-util.c path-util: add new path_is_valid() helper 2018-10-17 21:13:02 +02:00
path-util.h path-util: add new path_is_valid() helper 2018-10-17 21:13:02 +02:00
prioq.c prioq: use structrued initializer 2018-10-17 01:09:41 +09:00
prioq.h util,test: introduce cleanup function prioq_freep() 2018-10-16 22:17:08 +09:00
proc-cmdline.c proc-cmdline: introduce new proc_cmdline_get_key_many() helper 2018-11-14 17:01:54 +01:00
proc-cmdline.h proc-cmdline: introduce new proc_cmdline_get_key_many() helper 2018-11-14 17:01:54 +01:00
process-util.c coccinelle: make use of SYNTHETIC_ERRNO 2018-11-22 10:54:38 +01:00
process-util.h core: add namespace_fork() helper, that forks, joins a set of namespaces and forks again 2018-11-13 10:49:18 +01:00
procfs-util.c procfs-util: drop unnecessary zero initializations (#8321) 2018-03-01 11:27:06 +01:00
procfs-util.h procfs-util: add APIs to get consumed CPU time and used memory from /proc 2018-02-09 17:32:26 +01:00
random-util.c random-util: allow RDRAND to be used in 32-bit x86 binaries 2018-11-10 14:56:53 +01:00
random-util.h random-util: allow RDRAND to be used in 32-bit x86 binaries 2018-11-10 14:56:53 +01:00
ratelimit.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
ratelimit.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
raw-clone.h basic: add missing comma in raw_clone assembly for sparc 2018-06-27 09:16:04 -07:00
raw-reboot.h basic: add a common syscall wrapper around reboot() 2018-02-22 10:42:06 +01:00
refcnt.h refcnt: introduce DEFINE_ATOMIC_REF_UNREF_FUNC() macro and friends 2018-08-28 05:09:40 +09:00
replace-var.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
replace-var.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
rm-rf.c coccinelle: make use of SYNTHETIC_ERRNO 2018-11-22 10:54:38 +01:00
rm-rf.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
securebits.h tree-wide: use '#pragma once' for header guard 2018-08-30 06:10:43 +03:00
selinux-util.c selinux-util: drop unused variables 2018-08-22 16:32:35 +02:00
selinux-util.h selinux: introduce mac_selinux_create_file_prepare_at() 2018-07-30 15:54:03 +02:00
set.h hashmap: introduce hashmap_first_key_and_value() and friends 2018-10-13 21:45:50 +09:00
sigbus.c void call of page_size guarantees that sysconf is not called from signal handler 2018-07-26 15:39:12 +02:00
sigbus.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
signal-util.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
signal-util.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
siphash24.c meson: also add option for debugging siphash 2018-11-23 00:36:35 +09:00
siphash24.h siphash24: add helper for calculating the hash value for a string 2018-10-16 16:27:15 +02:00
smack-util.c tree-wide: set WRITE_STRING_FILE_DISABLE_BUFFER flag when we write files under /proc or /sys 2018-11-06 21:24:03 +09:00
smack-util.h smack: introduce mac_smack_fix_at() 2018-07-30 15:54:03 +02:00
socket-label.c tree-wide: introduce setsockopt_int() helper and make use of it everywhere 2018-10-18 19:50:29 +02:00
socket-protocol-to-name.awk basic: introduce socket_protocol_{from,to}_name() 2017-12-23 19:32:04 +09:00
socket-util.c tree-wide: use setsockopt_int() more 2018-10-19 05:52:42 +09:00
socket-util.h tree-wide: introduce setsockopt_int() helper and make use of it everywhere 2018-10-18 19:50:29 +02:00
sparse-endian.h tree-wide: use __ prefixed gcc attributes (#10843) 2018-11-20 12:34:08 +09:00
special.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
stat-util.c nspawn: beef up netns checking a bit, for compat with old kernels 2018-10-31 21:42:45 +03:00
stat-util.h basic/stat-util: introduce is_dir_fd() 2018-07-30 15:54:03 +02:00
static-destruct.h util: add set of macros for declaring _cleanup_-style destructors for static variables 2018-11-19 21:14:34 +01:00
stdio-util.h util: initialize _argtypes in VA_FORMAT_ADVANCE when systemd is built with MSan 2018-11-06 19:01:32 +01:00
strbuf.c tree-wide: use typesafe_bsearch() or typesafe_bsearch_r() 2018-09-19 08:08:03 +09:00
strbuf.h tree-wide: drop double newline 2018-06-29 11:02:17 +09:00
string-table.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
string-table.h string-table: do not ignore 'scope' argument 2018-08-28 12:40:25 +09:00
string-util.c string-util: introduce explicit_zero_safe() 2018-10-24 21:00:15 +02:00
string-util.h string-util: fix prototype of explicit_bzero_safe() (#10513) 2018-10-25 11:41:55 +09:00
strv.c strv: wrap strv_new() in a macro so that NULL sentinel is implicit 2018-10-31 18:00:52 +01:00
strv.h strv: wrap strv_new() in a macro so that NULL sentinel is implicit 2018-10-31 18:00:52 +01:00
strxcpyx.c strxcpyx: minor coding style updates 2018-10-15 19:35:00 +02:00
strxcpyx.h tree-wide: drop double newline 2018-06-29 11:02:17 +09:00
syslog-util.c syslog: fix segfault in syslog_parse_priority() 2018-08-08 18:27:15 +09:00
syslog-util.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
terminal-util.c terminal-util: introduce vt_release() helper 2018-11-21 14:28:34 +01:00
terminal-util.h terminal-util: introduce vt_release() helper 2018-11-21 14:28:34 +01:00
time-util.c Move LONG_LINE_MAX definition to fileio.h 2018-11-14 16:25:32 +01:00
time-util.h core: rework serialization 2018-10-26 10:52:41 +02:00
umask-util.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
unaligned.h tree-wide: use __ prefixed gcc attributes (#10843) 2018-11-20 12:34:08 +09:00
unit-def.c Make Watchdog Signal Configurable 2018-09-26 16:14:29 +02:00
unit-def.h Make Watchdog Signal Configurable 2018-09-26 16:14:29 +02:00
unit-name.c tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
unit-name.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
user-util.c Rename USER_CREDS_SYNTHESIZE_FALLBACK to …_PREFER_NSS 2018-08-20 16:06:41 +02:00
user-util.h basic/user-util: properly protect use of gshadow 2018-11-22 00:57:08 +01:00
utf8.c utf8: add utf8_to_utf16() helper 2018-09-25 15:57:47 +02:00
utf8.h uft8: add comment, requested by @keszybz 2018-09-27 17:21:18 +02:00
util.c basic/util: import memeqzero from casync 2018-11-18 16:12:53 +01:00
util.h tree-wide: use __ prefixed gcc attributes (#10843) 2018-11-20 12:34:08 +09:00
virt.c Move LONG_LINE_MAX definition to fileio.h 2018-11-14 16:25:32 +01:00
virt.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00
xattr-util.c build-sys: Detect whether struct statx is defined in sys/stat.h 2018-07-16 11:14:29 +02:00
xattr-util.h tree-wide: remove Lennart's copyright lines 2018-06-14 10:20:20 +02:00