X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fmachine%2Fmachine.c;h=602aa18be670ae3ba127e46104926ae4309f8e1f;hb=554604b3073467af75dc94fac9e2343148603289;hp=7d64abe5dd9635ee5c2183f6c63b752c67ffe5c0;hpb=1ee306e1248866617c96ed9f4263f375588ad838;p=elogind.git diff --git a/src/machine/machine.c b/src/machine/machine.c index 7d64abe5d..602aa18be 100644 --- a/src/machine/machine.c +++ b/src/machine/machine.c @@ -217,49 +217,52 @@ int machine_load(Machine *m) { return r; } -static int machine_start_scope(Machine *m) { +static int machine_start_scope(Machine *m, DBusMessageIter *iter) { _cleanup_free_ char *description = NULL; DBusError error; char *job; - int r; + int r = 0; assert(m); dbus_error_init(&error); if (!m->scope) { - char *escaped = NULL; + _cleanup_free_ char *escaped = NULL; + char *scope; escaped = unit_name_escape(m->name); if (!escaped) return log_oom(); - m->scope = strjoin("machine-", escaped, ".scope", NULL); - free(escaped); - - if (!m->scope) + scope = strjoin("machine-", escaped, ".scope", NULL); + if (!scope) return log_oom(); - r = hashmap_put(m->manager->machine_units, m->scope, m); - if (r < 0) - log_warning("Failed to create mapping between unit and machine"); - } + description = strappend(m->class == MACHINE_VM ? "Virtual Machine " : "Container ", m->name); - description = strappend(m->class == MACHINE_VM ? "Virtual Machine " : "Container ", m->name); + r = manager_start_scope(m->manager, scope, m->leader, SPECIAL_MACHINE_SLICE, description, iter, &error, &job); + if (r < 0) { + log_error("Failed to start machine scope: %s", bus_error(&error, r)); + dbus_error_free(&error); - r = manager_start_scope(m->manager, m->scope, m->leader, SPECIAL_MACHINE_SLICE, description, &error, &job); - if (r < 0) { - log_error("Failed to start machine scope: %s", bus_error(&error, r)); - dbus_error_free(&error); - } else { - free(m->scope_job); - m->scope_job = job; + free(scope); + return r; + } else { + m->scope = scope; + + free(m->scope_job); + m->scope_job = job; + } } + if (m->scope) + hashmap_put(m->manager->machine_units, m->scope, m); + return r; } -int machine_start(Machine *m) { +int machine_start(Machine *m, DBusMessageIter *iter) { int r; assert(m); @@ -268,7 +271,7 @@ int machine_start(Machine *m) { return 0; /* Create cgroup */ - r = machine_start_scope(m); + r = machine_start_scope(m, iter); if (r < 0) return r;