summarylogtreecommitdiffstats
path: root/0017-core-correctly-unregister-PIDs-from-PID-hashtables.patch
diff options
context:
space:
mode:
Diffstat (limited to '0017-core-correctly-unregister-PIDs-from-PID-hashtables.patch')
-rw-r--r--0017-core-correctly-unregister-PIDs-from-PID-hashtables.patch102
1 files changed, 0 insertions, 102 deletions
diff --git a/0017-core-correctly-unregister-PIDs-from-PID-hashtables.patch b/0017-core-correctly-unregister-PIDs-from-PID-hashtables.patch
deleted file mode 100644
index 209a3fb7544b..000000000000
--- a/0017-core-correctly-unregister-PIDs-from-PID-hashtables.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From bd44e61b0480712ec5585ff7b0295362a5f9dd36 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Thu, 6 Mar 2014 02:19:42 +0100
-Subject: [PATCH] core: correctly unregister PIDs from PID hashtables
-
----
- src/core/unit.c | 42 ++++++++++++++++++------------------------
- 1 file changed, 18 insertions(+), 24 deletions(-)
-
-diff --git a/src/core/unit.c b/src/core/unit.c
-index 2437ee3..85250ca 100644
---- a/src/core/unit.c
-+++ b/src/core/unit.c
-@@ -1704,11 +1704,11 @@ int unit_watch_pid(Unit *u, pid_t pid) {
- /* Watch a specific PID. We only support one or two units
- * watching each PID for now, not more. */
-
-- r = hashmap_ensure_allocated(&u->manager->watch_pids1, trivial_hash_func, trivial_compare_func);
-+ r = set_ensure_allocated(&u->pids, trivial_hash_func, trivial_compare_func);
- if (r < 0)
- return r;
-
-- r = set_ensure_allocated(&u->pids, trivial_hash_func, trivial_compare_func);
-+ r = hashmap_ensure_allocated(&u->manager->watch_pids1, trivial_hash_func, trivial_compare_func);
- if (r < 0)
- return r;
-
-@@ -1737,7 +1737,17 @@ void unit_unwatch_pid(Unit *u, pid_t pid) {
- set_remove(u->pids, LONG_TO_PTR(pid));
- }
-
--static int watch_pids_in_path(Unit *u, const char *path) {
-+void unit_unwatch_all_pids(Unit *u) {
-+ assert(u);
-+
-+ while (!set_isempty(u->pids))
-+ unit_unwatch_pid(u, PTR_TO_LONG(set_first(u->pids)));
-+
-+ set_free(u->pids);
-+ u->pids = NULL;
-+}
-+
-+static int unit_watch_pids_in_path(Unit *u, const char *path) {
- _cleanup_closedir_ DIR *d = NULL;
- _cleanup_fclose_ FILE *f = NULL;
- int ret = 0, r;
-@@ -1775,7 +1785,7 @@ static int watch_pids_in_path(Unit *u, const char *path) {
- if (!p)
- return -ENOMEM;
-
-- r = watch_pids_in_path(u, p);
-+ r = unit_watch_pids_in_path(u, p);
- if (r < 0 && ret >= 0)
- ret = r;
- }
-@@ -1788,31 +1798,15 @@ static int watch_pids_in_path(Unit *u, const char *path) {
- return ret;
- }
-
--
- int unit_watch_all_pids(Unit *u) {
- assert(u);
-
-- if (!u->cgroup_path)
-- return -ENOENT;
--
- /* Adds all PIDs from our cgroup to the set of PIDs we watch */
-
-- return watch_pids_in_path(u, u->cgroup_path);
--}
--
--void unit_unwatch_all_pids(Unit *u) {
-- Iterator i;
-- void *e;
--
-- assert(u);
--
-- SET_FOREACH(e, u->pids, i) {
-- hashmap_remove_value(u->manager->watch_pids1, e, u);
-- hashmap_remove_value(u->manager->watch_pids2, e, u);
-- }
-+ if (!u->cgroup_path)
-+ return -ENOENT;
-
-- set_free(u->pids);
-- u->pids = NULL;
-+ return unit_watch_pids_in_path(u, u->cgroup_path);
- }
-
- void unit_tidy_watch_pids(Unit *u, pid_t except1, pid_t except2) {
-@@ -1830,7 +1824,7 @@ void unit_tidy_watch_pids(Unit *u, pid_t except1, pid_t except2) {
- continue;
-
- if (!pid_is_unwaited(pid))
-- set_remove(u->pids, e);
-+ unit_unwatch_pid(u, pid);
- }
- }
-
---
-1.9.0
-