Requiring /sys/fs/bpf path to be a mount point at the moment of cgroup
controllers realization does more harm than good, because:
* Realization happens early on boot, the mount point may not be ready at
the time. That happens if mounts are made by a .mount unit (the issue we
encountered).
* BPF filesystem may be mounted on another point.
Remove the check. Instead verify that path provided by BPFProgram= is
within BPF fs when unit properties are parsed.
Split in two commits for simple backport.
return 0;
}
-int bpf_foreign_supported(void) {
- int r;
-
- r = cg_all_unified();
- if (r <= 0)
- return r;
-
- return path_is_mount_point("/sys/fs/bpf", NULL, 0);
-}
-
int bpf_foreign_install(Unit *u) {
_cleanup_free_ char *cgroup_path = NULL;
CGroupBPFForeignProgram *p;
#include "unit.h"
-int bpf_foreign_supported(void);
+static inline int bpf_foreign_supported(void) {
+ return cg_all_unified();
+}
+
/*
* Attach cgroup-bpf programs foreign to systemd, i.e. loaded to the kernel by an entity
* external to systemd.