diff options
author | Lennart Poettering <lennart@poettering.net> | 2015-09-11 17:25:35 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2015-09-11 18:31:49 +0200 |
commit | 5269eb6b32f662d21638e54bb13171a5b97fe58f (patch) | |
tree | f9dfe224ed1c863bbbb22840cf1a40ce6d89906b /src/core/unit.c | |
parent | aa36007ca18ece54495d108332ed21b4bf918f3b (diff) |
core: allocate sets of startup and failed units on-demand
There's a good chance we never needs these sets, hence allocate them
only when needed.
Diffstat (limited to 'src/core/unit.c')
-rw-r--r-- | src/core/unit.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/core/unit.c b/src/core/unit.c index f12d1c95cb..3bfc2460bc 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -528,7 +528,7 @@ void unit_free(Unit *u) { unit_release_cgroup(u); - manager_update_failed_units(u->manager, u, false); + (void) manager_update_failed_units(u->manager, u, false); set_remove(u->manager->startup_units, u); free(u->description); @@ -1172,6 +1172,7 @@ static int unit_add_mount_dependencies(Unit *u) { static int unit_add_startup_units(Unit *u) { CGroupContext *c; + int r; c = unit_get_cgroup_context(u); if (!c) @@ -1181,6 +1182,10 @@ static int unit_add_startup_units(Unit *u) { c->startup_blockio_weight == CGROUP_BLKIO_WEIGHT_INVALID) return 0; + r = set_ensure_allocated(&u->manager->startup_units, NULL); + if (r < 0) + return r; + return set_put(u->manager->startup_units, u); } @@ -1807,7 +1812,7 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su } /* Keep track of failed units */ - manager_update_failed_units(u->manager, u, ns == UNIT_FAILED); + (void) manager_update_failed_units(u->manager, u, ns == UNIT_FAILED); /* Make sure the cgroup is always removed when we become inactive */ if (UNIT_IS_INACTIVE_OR_FAILED(ns)) |