X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fswap.c;h=a7e2126edde5780ca3bb1e1f880c7985a71078dd;hb=9eb977db5b89b44f254ab40c1876a76b7d7ea2d0;hp=9c72732b9470bfb2f482f7f1a25ad0148b9a565f;hpb=b30e2f4c18ad81b04e4314fd191a5d458553773c;p=elogind.git diff --git a/src/core/swap.c b/src/core/swap.c index 9c72732b9..a7e2126ed 100644 --- a/src/core/swap.c +++ b/src/core/swap.c @@ -6,16 +6,16 @@ Copyright 2010 Lennart Poettering systemd is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. systemd is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU General Public License + You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . ***/ @@ -38,6 +38,7 @@ #include "bus-errors.h" #include "exit-status.h" #include "def.h" +#include "path-util.h" static const UnitActiveState state_translation_table[_SWAP_STATE_MAX] = { [SWAP_DEAD] = UNIT_INACTIVE, @@ -182,7 +183,6 @@ static int swap_add_target_links(Swap *s) { if (!p->noauto && !p->nofail && - (p->handle || UNIT(s)->manager->swap_auto) && s->from_etc_fstab && UNIT(s)->manager->running_as == MANAGER_SYSTEM) if ((r = unit_add_dependency(tu, UNIT_WANTS, UNIT(s), true)) < 0) @@ -212,9 +212,9 @@ static int swap_add_device_links(Swap *s) { UNIT(s)->manager->running_as == MANAGER_SYSTEM); else /* File based swap devices need to be ordered after - * remount-rootfs.service, since they might need a + * systemd-remount-fs.service, since they might need a * writable file system. */ - return unit_add_dependency_by_name(UNIT(s), UNIT_AFTER, SPECIAL_REMOUNT_ROOTFS_SERVICE, NULL, true); + return unit_add_dependency_by_name(UNIT(s), UNIT_AFTER, SPECIAL_REMOUNT_FS_SERVICE, NULL, true); } static int swap_add_default_dependencies(Swap *s) { @@ -322,7 +322,6 @@ int swap_add_one( int priority, bool noauto, bool nofail, - bool handle, bool set_flags) { Unit *u = NULL; @@ -420,7 +419,6 @@ int swap_add_one( p->priority = priority; p->noauto = noauto; p->nofail = nofail; - p->handle = handle; unit_add_to_dbus_queue(u); @@ -457,8 +455,9 @@ static int swap_process_new_swap(Manager *m, const char *device, int prio, bool if (!(d = udev_device_new_from_devnum(m->udev, 'b', st.st_rdev))) return -ENOMEM; - if ((dn = udev_device_get_devnode(d))) - r = swap_add_one(m, dn, device, prio, false, false, false, set_flags); + dn = udev_device_get_devnode(d); + if (dn) + r = swap_add_one(m, dn, device, prio, false, false, set_flags); /* Add additional units for all symlinks */ first = udev_device_get_devlinks_list_entry(d); @@ -475,14 +474,16 @@ static int swap_process_new_swap(Manager *m, const char *device, int prio, bool if ((!S_ISBLK(st.st_mode)) || st.st_rdev != udev_device_get_devnum(d)) continue; - if ((k = swap_add_one(m, p, device, prio, false, false, false, set_flags)) < 0) + k = swap_add_one(m, p, device, prio, false, false, set_flags); + if (k < 0) r = k; } udev_device_unref(d); } - if ((k = swap_add_one(m, device, device, prio, false, false, false, set_flags)) < 0) + k = swap_add_one(m, device, device, prio, false, false, set_flags); + if (k < 0) r = k; return r; @@ -576,7 +577,6 @@ static void swap_dump(Unit *u, FILE *f, const char *prefix) { "%sPriority: %i\n" "%sNoAuto: %s\n" "%sNoFail: %s\n" - "%sHandle: %s\n" "%sFrom /etc/fstab: %s\n" "%sFrom /proc/swaps: %s\n" "%sFrom fragment: %s\n", @@ -586,7 +586,6 @@ static void swap_dump(Unit *u, FILE *f, const char *prefix) { prefix, p->priority, prefix, yes_no(p->noauto), prefix, yes_no(p->nofail), - prefix, yes_no(p->handle), prefix, yes_no(s->from_etc_fstab), prefix, yes_no(s->from_proc_swaps), prefix, yes_no(s->from_fragment)); @@ -621,6 +620,8 @@ static int swap_spawn(Swap *s, ExecCommand *c, pid_t *_pid) { UNIT(s)->manager->confirm_spawn, UNIT(s)->cgroup_bondings, UNIT(s)->cgroup_attributes, + NULL, + NULL, &pid)) < 0) goto fail; @@ -690,7 +691,8 @@ static void swap_enter_signal(Swap *s, SwapState state, SwapResult f) { if ((r = set_put(pid_set, LONG_TO_PTR(s->control_pid))) < 0) goto fail; - if ((r = cgroup_bonding_kill_list(UNIT(s)->cgroup_bondings, sig, true, pid_set)) < 0) { + r = cgroup_bonding_kill_list(UNIT(s)->cgroup_bondings, sig, true, false, pid_set, NULL); + if (r < 0) { if (r != -EAGAIN && r != -ESRCH && r != -ENOENT) log_warning("Failed to kill control group: %s", strerror(-r)); } else if (r > 0) @@ -1321,7 +1323,8 @@ static int swap_kill(Unit *u, KillWho who, KillMode mode, int signo, DBusError * goto finish; } - if ((q = cgroup_bonding_kill_list(UNIT(s)->cgroup_bondings, signo, false, pid_set)) < 0) + q = cgroup_bonding_kill_list(UNIT(s)->cgroup_bondings, signo, false, false, pid_set, NULL); + if (q < 0) if (q != -EAGAIN && q != -ESRCH && q != -ENOENT) r = q; }