]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core/cgroup: allow to set cgroup path for frozen unit
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 13 Aug 2025 01:38:53 +0000 (10:38 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 13 Aug 2025 01:45:25 +0000 (10:45 +0900)
Otherwise, after 'systemctl daemon-reload' or 'daemon-reexec', frozen
units cannot gain cgroup paths and we cannot operate anything on them,
especially, we cannot thaw or stop them.
```
Aug 12 16:26:09 systemd[1]: wd.service: Job 1278 wd.service/stop finished, result=frozen
Aug 12 16:26:09 systemd[1]: Cannot stop frozen unit wd.service.
Aug 12 16:26:09 systemd[1]: wd.service: Cannot realize cgroup for frozen unit.
Aug 12 16:26:09 systemd[1]: Failed to realize cgroups for queued unit wd.service, ignoring: Device or resource busy
```

Follow-up for 23ac08115af83e3a0a937fa207fc52511aba2ffa.

src/core/cgroup.c

index ce9c30fc6edffb2ea5fe9ae508b79b99cdc52fc3..48149e15bd50f8eb5b9c4646a54b469132425b16 100644 (file)
@@ -2088,9 +2088,6 @@ static int unit_update_cgroup(
         if (!UNIT_HAS_CGROUP_CONTEXT(u))
                 return 0;
 
-        if (u->freezer_state != FREEZER_RUNNING)
-                return log_unit_error_errno(u, SYNTHETIC_ERRNO(EBUSY), "Cannot realize cgroup for frozen unit.");
-
         r = unit_get_cgroup_path_with_fallback(u, &cgroup);
         if (r < 0)
                 return log_unit_error_errno(u, r, "Failed to get cgroup path: %m");