33 lines
1.4 KiB
Diff
33 lines
1.4 KiB
Diff
|
Based on e0312f4db08c7100bd00299614e87bedc759b366 Mon Sep 17 00:00:00 2001
|
||
|
Based on c21b92ffe7ef939dd32502ac912cf8ad1c5638fd Mon Sep 17 00:00:00 2001
|
||
|
From: Michal Schmidt <mschmidt@redhat.com>
|
||
|
Date: Thu, 27 Nov 2014 15:23:58 +0100
|
||
|
Subject: [PATCH] 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.
|
||
|
---
|
||
|
src/core/transaction.c | 2 +-
|
||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||
|
|
||
|
--- src/core/transaction.c
|
||
|
+++ src/core/transaction.c 2014-12-15 12:06:11.721518136 +0000
|
||
|
@@ -510,7 +510,7 @@ static int transaction_is_destructive(Tr
|
||
|
assert(!j->transaction_next);
|
||
|
|
||
|
if (j->unit->job && (mode == JOB_FAIL || j->unit->job->irreversible) &&
|
||
|
- !job_type_is_superset(j->type, j->unit->job->type)) {
|
||
|
+ job_type_is_conflicting(j->unit->job->type, j->type)) {
|
||
|
|
||
|
sd_bus_error_setf(e, BUS_ERROR_TRANSACTION_IS_DESTRUCTIVE, "Transaction is destructive.");
|
||
|
return -EEXIST;
|