mirror of
https://github.com/AuxXxilium/eudev.git
synced 2025-03-06 04:20:29 +07:00
manager: drop all pending jobs when isolating
This commit is contained in:
parent
c8f4d7642b
commit
4fe60156fc
@ -1187,13 +1187,27 @@ static void transaction_minimize_impact(Manager *m) {
|
||||
} while (again);
|
||||
}
|
||||
|
||||
static int transaction_apply(Manager *m) {
|
||||
static int transaction_apply(Manager *m, JobMode mode) {
|
||||
Iterator i;
|
||||
Job *j;
|
||||
int r;
|
||||
|
||||
/* Moves the transaction jobs to the set of active jobs */
|
||||
|
||||
if (mode == JOB_ISOLATE) {
|
||||
|
||||
/* When isolating first kill all installed jobs which
|
||||
* aren't part of the new transaction */
|
||||
HASHMAP_FOREACH(j, m->jobs, i) {
|
||||
assert(j->installed);
|
||||
|
||||
if (hashmap_get(m->transaction_jobs, j->unit))
|
||||
continue;
|
||||
|
||||
job_finish_and_invalidate(j, JOB_CANCELED);
|
||||
}
|
||||
}
|
||||
|
||||
HASHMAP_FOREACH(j, m->transaction_jobs, i) {
|
||||
/* Assume merged */
|
||||
assert(!j->transaction_prev);
|
||||
@ -1322,7 +1336,7 @@ static int transaction_activate(Manager *m, JobMode mode, DBusError *e) {
|
||||
}
|
||||
|
||||
/* Tenth step: apply changes */
|
||||
if ((r = transaction_apply(m)) < 0) {
|
||||
if ((r = transaction_apply(m, mode)) < 0) {
|
||||
log_warning("Failed to apply transaction: %s", strerror(-r));
|
||||
goto rollback;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user