chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
socket: pass minimal abstract socket names
[elogind.git]
/
src
/
unit.c
diff --git
a/src/unit.c
b/src/unit.c
index 4810d2b9f43d72e544809494504f8766072f54d7..b362fd3b41957385e7e106f2a10bc98e45bc7bce 100644
(file)
--- a/
src/unit.c
+++ b/
src/unit.c
@@
-39,6
+39,7
@@
#include "specifier.h"
#include "dbus-unit.h"
#include "special.h"
#include "specifier.h"
#include "dbus-unit.h"
#include "special.h"
+#include "cgroup-util.h"
const UnitVTable * const unit_vtable[_UNIT_TYPE_MAX] = {
[UNIT_SERVICE] = &service_vtable,
const UnitVTable * const unit_vtable[_UNIT_TYPE_MAX] = {
[UNIT_SERVICE] = &service_vtable,
@@
-738,7
+739,7
@@
fail:
u->meta.load_state = UNIT_FAILED;
unit_add_to_dbus_queue(u);
u->meta.load_state = UNIT_FAILED;
unit_add_to_dbus_queue(u);
- log_
debug
("Failed to load configuration for %s: %s", u->meta.id, strerror(-r));
+ log_
notice
("Failed to load configuration for %s: %s", u->meta.id, strerror(-r));
return r;
}
return r;
}
@@
-878,10
+879,10
@@
static void unit_check_uneeded(Unit *u) {
if (!UNIT_IS_INACTIVE_OR_DEACTIVATING(unit_active_state(other)))
return;
if (!UNIT_IS_INACTIVE_OR_DEACTIVATING(unit_active_state(other)))
return;
- log_
debug
("Service %s is not needed anymore. Stopping.", u->meta.id);
+ log_
info
("Service %s is not needed anymore. Stopping.", u->meta.id);
/* Ok, nobody needs us anymore. Sniff. Then let's commit suicide */
/* Ok, nobody needs us anymore. Sniff. Then let's commit suicide */
- manager_add_job(u->meta.manager, JOB_STOP, u, JOB_FAIL, true, NULL);
+ manager_add_job(u->meta.manager, JOB_STOP, u, JOB_FAIL, true, NULL
, NULL
);
}
static void retroactively_start_dependencies(Unit *u) {
}
static void retroactively_start_dependencies(Unit *u) {
@@
-893,23
+894,23
@@
static void retroactively_start_dependencies(Unit *u) {
SET_FOREACH(other, u->meta.dependencies[UNIT_REQUIRES], i)
if (!UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
SET_FOREACH(other, u->meta.dependencies[UNIT_REQUIRES], i)
if (!UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
- manager_add_job(u->meta.manager, JOB_START, other, JOB_REPLACE, true, NULL);
+ manager_add_job(u->meta.manager, JOB_START, other, JOB_REPLACE, true, NULL
, NULL
);
SET_FOREACH(other, u->meta.dependencies[UNIT_REQUIRES_OVERRIDABLE], i)
if (!UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
SET_FOREACH(other, u->meta.dependencies[UNIT_REQUIRES_OVERRIDABLE], i)
if (!UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
- manager_add_job(u->meta.manager, JOB_START, other, JOB_FAIL, false, NULL);
+ manager_add_job(u->meta.manager, JOB_START, other, JOB_FAIL, false, NULL
, NULL
);
SET_FOREACH(other, u->meta.dependencies[UNIT_REQUISITE], i)
if (!UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
SET_FOREACH(other, u->meta.dependencies[UNIT_REQUISITE], i)
if (!UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
- manager_add_job(u->meta.manager, JOB_START, other, JOB_REPLACE, true, NULL);
+ manager_add_job(u->meta.manager, JOB_START, other, JOB_REPLACE, true, NULL
, NULL
);
SET_FOREACH(other, u->meta.dependencies[UNIT_WANTS], i)
if (!UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
SET_FOREACH(other, u->meta.dependencies[UNIT_WANTS], i)
if (!UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
- manager_add_job(u->meta.manager, JOB_START, other, JOB_FAIL, false, NULL);
+ manager_add_job(u->meta.manager, JOB_START, other, JOB_FAIL, false, NULL
, NULL
);
SET_FOREACH(other, u->meta.dependencies[UNIT_CONFLICTS], i)
if (!UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
SET_FOREACH(other, u->meta.dependencies[UNIT_CONFLICTS], i)
if (!UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other)))
- manager_add_job(u->meta.manager, JOB_STOP, other, JOB_REPLACE, true, NULL);
+ manager_add_job(u->meta.manager, JOB_STOP, other, JOB_REPLACE, true, NULL
, NULL
);
}
static void retroactively_stop_dependencies(Unit *u) {
}
static void retroactively_stop_dependencies(Unit *u) {
@@
-923,7
+924,7
@@
static void retroactively_stop_dependencies(Unit *u) {
/* Pull down units need us recursively if enabled */
SET_FOREACH(other, u->meta.dependencies[UNIT_REQUIRED_BY], i)
if (!UNIT_IS_INACTIVE_OR_DEACTIVATING(unit_active_state(other)))
/* Pull down units need us recursively if enabled */
SET_FOREACH(other, u->meta.dependencies[UNIT_REQUIRED_BY], i)
if (!UNIT_IS_INACTIVE_OR_DEACTIVATING(unit_active_state(other)))
- manager_add_job(u->meta.manager, JOB_STOP, other, JOB_REPLACE, true, NULL);
+ manager_add_job(u->meta.manager, JOB_STOP, other, JOB_REPLACE, true, NULL
, NULL
);
}
/* Garbage collect services that might not be needed anymore, if enabled */
}
/* Garbage collect services that might not be needed anymore, if enabled */
@@
-970,6
+971,12
@@
void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns) {
else if (UNIT_IS_ACTIVE_OR_RELOADING(os) && !UNIT_IS_ACTIVE_OR_RELOADING(ns))
u->meta.active_exit_timestamp = ts;
else if (UNIT_IS_ACTIVE_OR_RELOADING(os) && !UNIT_IS_ACTIVE_OR_RELOADING(ns))
u->meta.active_exit_timestamp = ts;
+ if (ns != os && ns == UNIT_MAINTENANCE)
+ log_notice("Unit %s entered maintenance state.", u->meta.id);
+
+ if (UNIT_IS_INACTIVE_OR_MAINTENANCE(ns))
+ cgroup_bonding_trim_list(u->meta.cgroup_bondings, true);
+
timer_unit_notify(u, ns);
path_unit_notify(u, ns);
timer_unit_notify(u, ns);
path_unit_notify(u, ns);
@@
-1138,14
+1145,14
@@
int unit_watch_pid(Unit *u, pid_t pid) {
/* Watch a specific PID. We only support one unit watching
* each PID for now. */
/* Watch a specific PID. We only support one unit watching
* each PID for now. */
- return hashmap_put(u->meta.manager->watch_pids,
UINT32
_TO_PTR(pid), u);
+ return hashmap_put(u->meta.manager->watch_pids,
LONG
_TO_PTR(pid), u);
}
void unit_unwatch_pid(Unit *u, pid_t pid) {
assert(u);
assert(pid >= 1);
}
void unit_unwatch_pid(Unit *u, pid_t pid) {
assert(u);
assert(pid >= 1);
- hashmap_remove_value(u->meta.manager->watch_pids,
UINT32
_TO_PTR(pid), u);
+ hashmap_remove_value(u->meta.manager->watch_pids,
LONG
_TO_PTR(pid), u);
}
int unit_watch_timer(Unit *u, usec_t delay, Watch *w) {
}
int unit_watch_timer(Unit *u, usec_t delay, Watch *w) {
@@
-1391,7
+1398,7
@@
int unit_add_dependency_by_name(Unit *u, UnitDependency d, const char *name, con
if (!(name = resolve_template(u, name, path, &s)))
return -ENOMEM;
if (!(name = resolve_template(u, name, path, &s)))
return -ENOMEM;
- if ((r = manager_load_unit(u->meta.manager, name, path, &other)) < 0)
+ if ((r = manager_load_unit(u->meta.manager, name, path,
NULL,
&other)) < 0)
goto finish;
r = unit_add_dependency(u, d, other, add_reference);
goto finish;
r = unit_add_dependency(u, d, other, add_reference);
@@
-1412,7
+1419,7
@@
int unit_add_two_dependencies_by_name(Unit *u, UnitDependency d, UnitDependency
if (!(name = resolve_template(u, name, path, &s)))
return -ENOMEM;
if (!(name = resolve_template(u, name, path, &s)))
return -ENOMEM;
- if ((r = manager_load_unit(u->meta.manager, name, path, &other)) < 0)
+ if ((r = manager_load_unit(u->meta.manager, name, path,
NULL,
&other)) < 0)
goto finish;
r = unit_add_two_dependencies(u, d, e, other, add_reference);
goto finish;
r = unit_add_two_dependencies(u, d, e, other, add_reference);
@@
-1433,7
+1440,7
@@
int unit_add_dependency_by_name_inverse(Unit *u, UnitDependency d, const char *n
if (!(name = resolve_template(u, name, path, &s)))
return -ENOMEM;
if (!(name = resolve_template(u, name, path, &s)))
return -ENOMEM;
- if ((r = manager_load_unit(u->meta.manager, name, path, &other)) < 0)
+ if ((r = manager_load_unit(u->meta.manager, name, path,
NULL,
&other)) < 0)
goto finish;
r = unit_add_dependency(other, d, u, add_reference);
goto finish;
r = unit_add_dependency(other, d, u, add_reference);
@@
-1454,7
+1461,7
@@
int unit_add_two_dependencies_by_name_inverse(Unit *u, UnitDependency d, UnitDep
if (!(name = resolve_template(u, name, path, &s)))
return -ENOMEM;
if (!(name = resolve_template(u, name, path, &s)))
return -ENOMEM;
- if ((r = manager_load_unit(u->meta.manager, name, path, &other)) < 0)
+ if ((r = manager_load_unit(u->meta.manager, name, path,
NULL,
&other)) < 0)
goto finish;
if ((r = unit_add_two_dependencies(other, d, e, u, add_reference)) < 0)
goto finish;
if ((r = unit_add_two_dependencies(other, d, e, u, add_reference)) < 0)
@@
-1592,7
+1599,7
@@
int unit_add_cgroup_from_text(Unit *u, const char *name) {
if (n > 0)
controller = strndup(name, n);
else
if (n > 0)
controller = strndup(name, n);
else
- controller = strdup(
u->meta.manager->cgroup_controller
);
+ controller = strdup(
SYSTEMD_CGROUP_CONTROLLER
);
if (!controller) {
r = -ENOMEM;
if (!controller) {
r = -ENOMEM;
@@
-1641,7
+1648,7
@@
int unit_add_default_cgroup(Unit *u) {
if (!(b = new0(CGroupBonding, 1)))
return -ENOMEM;
if (!(b = new0(CGroupBonding, 1)))
return -ENOMEM;
- if (!(b->controller = strdup(
u->meta.manager->cgroup_controller
)))
+ if (!(b->controller = strdup(
SYSTEMD_CGROUP_CONTROLLER
)))
goto fail;
if (!(b->path = default_cgroup_path(u)))
goto fail;
if (!(b->path = default_cgroup_path(u)))
@@
-1666,7
+1673,7
@@
fail:
CGroupBonding* unit_get_default_cgroup(Unit *u) {
assert(u);
CGroupBonding* unit_get_default_cgroup(Unit *u) {
assert(u);
- return cgroup_bonding_find_list(u->meta.cgroup_bondings,
u->meta.manager->cgroup_controller
);
+ return cgroup_bonding_find_list(u->meta.cgroup_bondings,
SYSTEMD_CGROUP_CONTROLLER
);
}
int unit_load_related_unit(Unit *u, const char *type, Unit **_found) {
}
int unit_load_related_unit(Unit *u, const char *type, Unit **_found) {
@@
-1682,7
+1689,7
@@
int unit_load_related_unit(Unit *u, const char *type, Unit **_found) {
assert(!unit_has_name(u, t));
assert(!unit_has_name(u, t));
- r = manager_load_unit(u->meta.manager, t, NULL, _found);
+ r = manager_load_unit(u->meta.manager, t, NULL,
NULL,
_found);
free(t);
assert(r < 0 || *_found != u);
free(t);
assert(r < 0 || *_found != u);
@@
-1967,7
+1974,7
@@
int unit_add_node_link(Unit *u, const char *what, bool wants) {
if (!(e = unit_name_build_escape(what+1, NULL, ".device")))
return -ENOMEM;
if (!(e = unit_name_build_escape(what+1, NULL, ".device")))
return -ENOMEM;
- r = manager_load_unit(u->meta.manager, e, NULL, &device);
+ r = manager_load_unit(u->meta.manager, e, NULL,
NULL,
&device);
free(e);
if (r < 0)
free(e);
if (r < 0)
@@
-1993,7
+2000,7
@@
int unit_coldplug(Unit *u) {
return r;
if (u->meta.deserialized_job >= 0) {
return r;
if (u->meta.deserialized_job >= 0) {
- if ((r = manager_add_job(u->meta.manager, u->meta.deserialized_job, u, JOB_FAIL, false, NULL)) < 0)
+ if ((r = manager_add_job(u->meta.manager, u->meta.deserialized_job, u, JOB_FAIL, false, NULL
, NULL
)) < 0)
return r;
u->meta.deserialized_job = _JOB_TYPE_INVALID;
return r;
u->meta.deserialized_job = _JOB_TYPE_INVALID;