chiark / gitweb /
machined: don't force terminate registered machines
authorLennart Poettering <lennart@poettering.net>
Thu, 3 Jul 2014 10:48:51 +0000 (12:48 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 3 Jul 2014 10:51:07 +0000 (12:51 +0200)
When a machine is registered in machined with CreateMachine it is OK to
kill the machine when it is terminated, but when an existing unit is
simply registered via RegisterMachine we shouldn't do that, as the unit
is controlled by somebody else.

src/machine/machine.c
src/machine/machine.h
src/machine/machined-dbus.c

index 0b0d45bb266594410f7cf6c7b04be6e7118e6646..c0fa1b24b6c068e06923d05d0f2f39834ed4731e 100644 (file)
@@ -360,10 +360,12 @@ static int machine_stop_scope(Machine *m) {
         if (!m->unit)
                 return 0;
 
-        r = manager_stop_unit(m->manager, m->unit, &error, &job);
-        if (r < 0) {
-                log_error("Failed to stop machine scope: %s", bus_error_message(&error, r));
-                return r;
+        if (!m->registered) {
+                r = manager_stop_unit(m->manager, m->unit, &error, &job);
+                if (r < 0) {
+                        log_error("Failed to stop machine scope: %s", bus_error_message(&error, r));
+                        return r;
+                }
         }
 
         free(m->scope_job);
index a894a463a9597693e0c453b4ede57b82be8dfeb5..ed1c81c4f4f520e3459d1ef97192e36dfdaa6a6f 100644 (file)
@@ -72,6 +72,7 @@ struct Machine {
 
         bool in_gc_queue:1;
         bool started:1;
+        bool registered:1;
 
         sd_bus_message *create_message;
 
index 6f8ba474fa6d5cdb5970d6e227da8f5e82c639c7..7c1802ce2a74e749c14cafa10f71a9664f4a73fe 100644 (file)
@@ -223,6 +223,7 @@ static int method_create_or_register_machine(Manager *manager, sd_bus_message *m
         m->leader = leader;
         m->class = c;
         m->id = id;
+        m->registered = true;
 
         if (!isempty(service)) {
                 m->service = strdup(service);