summaryrefslogtreecommitdiff
path: root/unit.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2010-04-08 04:34:42 +0200
committerLennart Poettering <lennart@poettering.net>2010-04-08 04:35:03 +0200
commitcc91696756e1747a24def7dee0324db65ae66d7e (patch)
tree59a1df64d41037b763c21ed3d7b463c2eea0572d /unit.c
parentaab14b13b491c08aa3ab0c3c59b2f3885692ffea (diff)
unit: when merging a device, follow the merge first
Diffstat (limited to 'unit.c')
-rw-r--r--unit.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/unit.c b/unit.c
index 6fa878345f..392be841d9 100644
--- a/unit.c
+++ b/unit.c
@@ -394,6 +394,8 @@ int unit_merge(Unit *u, Unit *other) {
assert(other);
assert(u->meta.manager == other->meta.manager);
+ other = unit_follow_merge(other);
+
if (other == u)
return 0;
@@ -403,7 +405,8 @@ int unit_merge(Unit *u, Unit *other) {
if (u->meta.type != u->meta.type)
return -EINVAL;
- if (other->meta.load_state != UNIT_STUB)
+ if (other->meta.load_state != UNIT_STUB &&
+ other->meta.load_state != UNIT_FAILED)
return -EEXIST;
/* Merge names */