mirror of
https://github.com/Dasharo/systemd.git
synced 2026-03-06 15:02:31 -08:00
machine: propagate error from machine_new
This commit is contained in:
@@ -35,12 +35,14 @@
|
||||
|
||||
DEFINE_TRIVIAL_CLEANUP_FUNC(Machine*, machine_free);
|
||||
|
||||
Machine* machine_new(Manager *manager, MachineClass class, const char *name) {
|
||||
int machine_new(Manager *manager, MachineClass class, const char *name, Machine **ret) {
|
||||
_cleanup_(machine_freep) Machine *m = NULL;
|
||||
int r;
|
||||
|
||||
assert(manager);
|
||||
assert(class < _MACHINE_CLASS_MAX);
|
||||
assert(name);
|
||||
assert(ret);
|
||||
|
||||
/* Passing class == _MACHINE_CLASS_INVALID here is fine. It
|
||||
* means as much as "we don't know yet", and that we'll figure
|
||||
@@ -48,26 +50,28 @@ Machine* machine_new(Manager *manager, MachineClass class, const char *name) {
|
||||
|
||||
m = new0(Machine, 1);
|
||||
if (!m)
|
||||
return NULL;
|
||||
return -ENOMEM;
|
||||
|
||||
m->name = strdup(name);
|
||||
if (!m->name)
|
||||
return NULL;
|
||||
return -ENOMEM;
|
||||
|
||||
if (class != MACHINE_HOST) {
|
||||
m->state_file = path_join("/run/systemd/machines", m->name);
|
||||
if (!m->state_file)
|
||||
return NULL;
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
m->class = class;
|
||||
|
||||
if (hashmap_put(manager->machines, m->name, m) < 0)
|
||||
return NULL;
|
||||
r = hashmap_put(manager->machines, m->name, m);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
m->manager = manager;
|
||||
|
||||
return TAKE_PTR(m);
|
||||
*ret = TAKE_PTR(m);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Machine* machine_free(Machine *m) {
|
||||
|
||||
@@ -66,7 +66,7 @@ struct Machine {
|
||||
LIST_FIELDS(Machine, gc_queue);
|
||||
};
|
||||
|
||||
Machine* machine_new(Manager *manager, MachineClass class, const char *name);
|
||||
int machine_new(Manager *manager, MachineClass class, const char *name, Machine **ret);
|
||||
Machine* machine_free(Machine *m);
|
||||
bool machine_may_gc(Machine *m, bool drop_not_started);
|
||||
void machine_add_to_gc_queue(Machine *m);
|
||||
|
||||
@@ -1492,15 +1492,16 @@ int manager_get_machine_by_pid(Manager *m, pid_t pid, Machine **machine) {
|
||||
|
||||
int manager_add_machine(Manager *m, const char *name, Machine **_machine) {
|
||||
Machine *machine;
|
||||
int r;
|
||||
|
||||
assert(m);
|
||||
assert(name);
|
||||
|
||||
machine = hashmap_get(m->machines, name);
|
||||
if (!machine) {
|
||||
machine = machine_new(m, _MACHINE_CLASS_INVALID, name);
|
||||
if (!machine)
|
||||
return -ENOMEM;
|
||||
r = machine_new(m, _MACHINE_CLASS_INVALID, name, &machine);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
if (_machine)
|
||||
|
||||
@@ -117,9 +117,9 @@ static int manager_add_host_machine(Manager *m) {
|
||||
if (!unit)
|
||||
return log_oom();
|
||||
|
||||
t = machine_new(m, MACHINE_HOST, ".host");
|
||||
if (!t)
|
||||
return log_oom();
|
||||
r = machine_new(m, MACHINE_HOST, ".host", &t);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to create machine: %m");
|
||||
|
||||
t->leader = 1;
|
||||
t->id = mid;
|
||||
|
||||
Reference in New Issue
Block a user