summaryrefslogtreecommitdiff
path: root/src/manager.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2011-02-16 19:33:17 +0100
committerLennart Poettering <lennart@poettering.net>2011-02-16 19:34:38 +0100
commit3aea3b35979b377b7673132b601aab8a33e20cdc (patch)
tree581600818496fc2bfa39c46ee820cefb07353ea2 /src/manager.c
parent3ede835a0486f2ecc025dede0b33e9a1edc06d30 (diff)
manager: don't consider transaction jobs conflicting with queued jobs redundant
Diffstat (limited to 'src/manager.c')
-rw-r--r--src/manager.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/manager.c b/src/manager.c
index 7d0b351c9d..b2aa8ee45e 100644
--- a/src/manager.c
+++ b/src/manager.c
@@ -913,7 +913,8 @@ static void transaction_drop_redundant(Manager *m) {
LIST_FOREACH(transaction, k, j) {
if (!job_is_anchor(k) &&
- (j->installed || job_type_is_redundant(k->type, unit_active_state(k->unit))))
+ (k->installed || job_type_is_redundant(k->type, unit_active_state(k->unit))) &&
+ (!k->unit->meta.job || !job_type_is_conflicting(k->type, k->unit->meta.job->type)))
continue;
changes_something = true;
@@ -1423,6 +1424,11 @@ static int transaction_add_job_and_dependencies(
assert(type < _JOB_TYPE_MAX);
assert(unit);
+ /* log_debug("Pulling in %s/%s from %s/%s", */
+ /* unit->meta.id, job_type_to_string(type), */
+ /* by ? by->unit->meta.id : "NA", */
+ /* by ? job_type_to_string(by->type) : "NA"); */
+
if (unit->meta.load_state != UNIT_LOADED &&
unit->meta.load_state != UNIT_ERROR &&
unit->meta.load_state != UNIT_MASKED) {