diff options
author | Lennart Poettering <lennart@poettering.net> | 2019-03-22 20:57:30 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2019-03-27 12:37:37 +0100 |
commit | 50cbaba4fe5a32850998682699322d012e597e4a (patch) | |
tree | e5c26a2e173f20ce57e67168c55859a0b90abbb2 /src/core/transaction.c | |
parent | 49bd196d693efe0acfc8d56c4e3d8f7ba9f91b5d (diff) | |
download | systemd-50cbaba4fe5a32850998682699322d012e597e4a.tar.gz |
core: add new API for enqueing a job with returning the transaction data
Diffstat (limited to 'src/core/transaction.c')
-rw-r--r-- | src/core/transaction.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/core/transaction.c b/src/core/transaction.c index 2418332b9a..e0ba3c845f 100644 --- a/src/core/transaction.c +++ b/src/core/transaction.c @@ -589,7 +589,12 @@ rescan: } } -static int transaction_apply(Transaction *tr, Manager *m, JobMode mode) { +static int transaction_apply( + Transaction *tr, + Manager *m, + JobMode mode, + Set *affected_jobs) { + Iterator i; Job *j; int r; @@ -646,6 +651,11 @@ static int transaction_apply(Transaction *tr, Manager *m, JobMode mode) { job_add_to_dbus_queue(j); job_start_timer(j, false); job_shutdown_magic(j); + + /* When 'affected' is specified, let's track all in it all jobs that were touched because of + * this transaction. */ + if (affected_jobs) + (void) set_put(affected_jobs, j); } return 0; @@ -658,7 +668,13 @@ rollback: return r; } -int transaction_activate(Transaction *tr, Manager *m, JobMode mode, sd_bus_error *e) { +int transaction_activate( + Transaction *tr, + Manager *m, + JobMode mode, + Set *affected_jobs, + sd_bus_error *e) { + Iterator i; Job *j; int r; @@ -735,7 +751,7 @@ int transaction_activate(Transaction *tr, Manager *m, JobMode mode, sd_bus_error return log_notice_errno(r, "Requested transaction contradicts existing jobs: %s", bus_error_message(e, r)); /* Tenth step: apply changes */ - r = transaction_apply(tr, m, mode); + r = transaction_apply(tr, m, mode, affected_jobs); if (r < 0) return log_warning_errno(r, "Failed to apply transaction: %m"); |