X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fcore%2Fmanager.c;h=aa918f1bd0d0d1cde30c4a69da2358af01564aab;hp=44690525ea556422b0e4abaa2e23e7f54528d19b;hb=02a3bcc6b4372ca50c0a62b193f9a75b988ffa69;hpb=9156e799a258658cf3f51434708cdb194c13eaa4 diff --git a/src/core/manager.c b/src/core/manager.c index 44690525e..aa918f1bd 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -63,6 +63,7 @@ #include "exit-status.h" #include "virt.h" #include "watchdog.h" +#include "cgroup-util.h" /* As soon as 16 units are in our GC queue, make sure to run a gc sweep */ #define GC_QUEUE_ENTRIES_MAX 16 @@ -661,13 +662,15 @@ int manager_startup(Manager *m, FILE *serialization, FDSet *fds) { return r; } +static void transaction_unlink_job(Manager *m, Job *j, bool delete_dependencies); + static void transaction_delete_job(Manager *m, Job *j, bool delete_dependencies) { assert(m); assert(j); /* Deletes one job from the transaction */ - manager_transaction_unlink_job(m, j, delete_dependencies); + transaction_unlink_job(m, j, delete_dependencies); if (!j->installed) job_free(j); @@ -709,8 +712,10 @@ static void transaction_abort(Manager *m) { while ((j = hashmap_first(m->transaction_jobs))) if (j->installed) transaction_delete_job(m, j, true); - else + else { + transaction_unlink_job(m, j, true); job_free(j); + } assert(hashmap_isempty(m->transaction_jobs)); @@ -757,7 +762,7 @@ static void transaction_merge_and_delete_job(Manager *m, Job *j, Job *other, Job assert(j->unit == other->unit); assert(!j->installed); - /* Merges 'other' into 'j' and then deletes j. */ + /* Merges 'other' into 'j' and then deletes 'other'. */ j->type = t; j->state = JOB_WAITING; @@ -802,6 +807,7 @@ static void transaction_merge_and_delete_job(Manager *m, Job *j, Job *other, Job other->object_list = NULL; transaction_delete_job(m, other, true); } + static bool job_is_conflicted_by(Job *j) { JobDependency *l; @@ -1439,6 +1445,7 @@ static Job* transaction_add_one_job(Manager *m, JobType type, Unit *unit, bool o LIST_PREPEND(Job, transaction, f, j); if (hashmap_replace(m->transaction_jobs, unit, f) < 0) { + LIST_REMOVE(Job, transaction, f, j); job_free(j); return NULL; } @@ -1451,7 +1458,7 @@ static Job* transaction_add_one_job(Manager *m, JobType type, Unit *unit, bool o return j; } -void manager_transaction_unlink_job(Manager *m, Job *j, bool delete_dependencies) { +static void transaction_unlink_job(Manager *m, Job *j, bool delete_dependencies) { assert(m); assert(j); @@ -3172,7 +3179,7 @@ int manager_set_default_controllers(Manager *m, char **controllers) { strv_free(m->default_controllers); m->default_controllers = l; - manager_shorten_default_controllers(m); + cg_shorten_controllers(m->default_controllers); return 0; }