int priority,
bool set_flags) {
+ _cleanup_(unit_freep) Unit *new = NULL;
_cleanup_free_ char *e = NULL;
- bool new;
Unit *u;
Swap *s;
- SwapParameters *p;
int r;
assert(m);
if (s->from_proc_swaps &&
!path_equal(s->parameters_proc_swaps.what, what_proc_swaps))
- return log_error_errno(SYNTHETIC_ERRNO(EEXIST),
- "Swap %s appeared twice with different device paths %s and %s, refusing.",
- e, s->parameters_proc_swaps.what, what_proc_swaps);
-
- new = false;
+ return log_unit_error_errno(u, SYNTHETIC_ERRNO(EEXIST),
+ "Swap appeared twice with different device paths %s and %s, refusing.",
+ s->parameters_proc_swaps.what, what_proc_swaps);
} else {
- new = true;
-
- r = unit_new_for_name(m, sizeof(Swap), e, &u);
- if (r < 0) {
- log_unit_warning_errno(u, r, "Failed to load swap unit: %m");
- goto fail;
- }
+ r = unit_new_for_name(m, sizeof(Swap), e, &new);
+ if (r < 0)
+ return log_warning_errno(r, "Failed to load swap unit '%s': %m", e);
+ u = new;
s = ASSERT_PTR(SWAP(u));
s->what = strdup(what);
- if (s->what) {
- r = log_oom();
- goto fail;
- }
+ if (!s->what)
+ return log_oom();
unit_add_to_load_queue(u);
}
- p = &s->parameters_proc_swaps;
+ SwapParameters *p = &s->parameters_proc_swaps;
- if (!s->parameters_proc_swaps.what) {
+ if (!p->what) {
p->what = strdup(what_proc_swaps);
- if (!p->what) {
- r = log_oom();
- goto fail;
- }
+ if (!p->what)
+ return log_oom();
}
- /* The unit is definitely around now, mark it as loaded if it was previously referenced but could not be
- * loaded. After all we can load it now, from the data in /proc/swaps. */
+ /* The unit is definitely around now, mark it as loaded if it was previously referenced but
+ * could not be loaded. After all we can load it now, from the data in /proc/swaps. */
if (IN_SET(u->load_state, UNIT_NOT_FOUND, UNIT_BAD_SETTING, UNIT_ERROR)) {
u->load_state = UNIT_LOADED;
u->load_error = 0;
if (set_flags) {
s->is_active = true;
- s->just_activated = !SWAP(u)->from_proc_swaps;
+ s->just_activated = !s->from_proc_swaps;
}
s->from_proc_swaps = true;
unit_add_to_dbus_queue(u);
return 0;
-
-fail:
- if (!new)
- unit_free(u);
-
- return r;
}
static void swap_process_new(Manager *m, const char *device, int prio, bool set_flags) {