diff options
author | Michal Schmidt <mschmidt@redhat.com> | 2014-11-27 15:23:58 +0100 |
---|---|---|
committer | Michal Schmidt <mschmidt@redhat.com> | 2014-11-27 16:14:58 +0100 |
commit | c21b92ffe7ef939dd32502ac912cf8ad1c5638fd (patch) | |
tree | 50469f4833aee9836d05efe9cd16c9d86b42d55b /src/core/transaction.c | |
parent | 0f84a72e3c0f58d71cff2121e6df1611eaf9c9ea (diff) |
core: fix transaction destructiveness check once more
The previous fix e0312f4db "core: fix check for transaction
destructiveness" broke test-engine (noticed by Zbyszek).
Apparently I had a wrong idea of the intended semantics of --fail.
The manpage says the operation should fail if it "conflicts with a
pending job (more specifically: causes an already pending start job to
be reversed into a stop job or vice versa)".
So let's check job_type_is_conflicting, instead of !is_superset.
This makes both test-engine and TEST-03-JOBS pass again.
Diffstat (limited to 'src/core/transaction.c')
-rw-r--r-- | src/core/transaction.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/core/transaction.c b/src/core/transaction.c index b992eddf99..6ad11b2fdb 100644 --- a/src/core/transaction.c +++ b/src/core/transaction.c @@ -511,7 +511,7 @@ static int transaction_is_destructive(Transaction *tr, JobMode mode, sd_bus_erro assert(!j->transaction_next); if (j->unit->job && (mode == JOB_FAIL || j->unit->job->irreversible) && - !job_type_is_superset(j->unit->job->type, j->type)) + job_type_is_conflicting(j->unit->job->type, j->type)) return sd_bus_error_setf(e, BUS_ERROR_TRANSACTION_IS_DESTRUCTIVE, "Transaction is destructive."); } |