chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
7712ea6
)
unit: don't recheck conditions when a unit is already starting but unit_start() is...
author
Lennart Poettering
<lennart@poettering.net>
Thu, 22 Sep 2011 19:32:18 +0000
(21:32 +0200)
committer
Lennart Poettering
<lennart@poettering.net>
Thu, 22 Sep 2011 19:32:18 +0000
(21:32 +0200)
src/unit.c
patch
|
blob
|
history
diff --git
a/src/unit.c
b/src/unit.c
index 3ce87ea1d38ebdecfef6c26b609ef98a36b6aa1a..0b435cb78efdb283b12d5078f2d3ca538eb3a682 100644
(file)
--- a/
src/unit.c
+++ b/
src/unit.c
@@
-888,16
+888,20
@@
int unit_start(Unit *u) {
if (u->meta.load_state != UNIT_LOADED)
return -EINVAL;
if (u->meta.load_state != UNIT_LOADED)
return -EINVAL;
- /* If this is already
(being) started, then this will
- *
succeed. Note that this will even succeed if this unit is
- *
not startable by the user. This is relied on to detect when
- * w
e need to w
ait for units and when waiting is finished. */
+ /* If this is already
started, then this will succeed. Note
+ *
that this will even succeed if this unit is not startable
+ *
by the user. This is relied on to detect when we need to
+ * wait for units and when waiting is finished. */
state = unit_active_state(u);
if (UNIT_IS_ACTIVE_OR_RELOADING(state))
return -EALREADY;
state = unit_active_state(u);
if (UNIT_IS_ACTIVE_OR_RELOADING(state))
return -EALREADY;
- /* If the conditions failed, don't do anything at all */
- if (!unit_condition_test(u)) {
+ /* If the conditions failed, don't do anything at all. If we
+ * already are activating this call might still be useful to
+ * speed up activation in case there is some hold-off time,
+ * but we don't want to recheck the condition in that case. */
+ if (state != UNIT_ACTIVATING &&
+ !unit_condition_test(u)) {
log_debug("Starting of %s requested but condition failed. Ignoring.", u->meta.id);
return -EALREADY;
}
log_debug("Starting of %s requested but condition failed. Ignoring.", u->meta.id);
return -EALREADY;
}