X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fmount.c;h=00780101a0c1edbced14f97a2ce6c0371416a33f;hp=88b54bbb2913a1057f03471c35e07c5cce3aa081;hb=715ac17a84f7d721dec613d86d83e671704fafcc;hpb=50483512b901aa216bc12bbe12dc99c1963d79fb diff --git a/src/mount.c b/src/mount.c index 88b54bbb2..00780101a 100644 --- a/src/mount.c +++ b/src/mount.c @@ -289,9 +289,13 @@ static int mount_add_target_links(Mount *m) { noauto = !!mount_test_option(p->options, MNTOPT_NOAUTO); nofail = !!mount_test_option(p->options, "nofail"); - handle = !!mount_test_option(p->options, "comment=systemd.mount") || + handle = + mount_test_option(p->options, "comment=systemd.mount") || + mount_test_option(p->options, "x-systemd-mount") || m->meta.manager->mount_auto; - automount = !!mount_test_option(p->options, "comment=systemd.automount"); + automount = + mount_test_option(p->options, "comment=systemd.automount") || + mount_test_option(p->options, "x-systemd-automount"); if (mount_test_option(p->options, "_netdev") || (p->fstype && fstype_is_network(p->fstype))) { @@ -729,9 +733,9 @@ static void mount_enter_signal(Mount *m, MountState state, bool success) { state == MOUNT_REMOUNTING_SIGTERM) ? m->exec_context.kill_signal : SIGKILL; if (m->control_pid > 0) { - if (kill(m->exec_context.kill_mode == KILL_PROCESS_GROUP ? - -m->control_pid : - m->control_pid, sig) < 0 && errno != ESRCH) + if (kill_and_sigcont(m->exec_context.kill_mode == KILL_PROCESS_GROUP ? + -m->control_pid : + m->control_pid, sig) < 0 && errno != ESRCH) log_warning("Failed to kill control process %li: %m", (long) m->control_pid); else @@ -750,7 +754,7 @@ static void mount_enter_signal(Mount *m, MountState state, bool success) { if ((r = set_put(pid_set, LONG_TO_PTR(m->control_pid))) < 0) goto fail; - if ((r = cgroup_bonding_kill_list(m->meta.cgroup_bondings, sig, pid_set)) < 0) { + if ((r = cgroup_bonding_kill_list(m->meta.cgroup_bondings, sig, true, pid_set)) < 0) { if (r != -EAGAIN && r != -ESRCH && r != -ENOENT) log_warning("Failed to kill control group: %s", strerror(-r)); } else if (r > 0) @@ -1678,7 +1682,7 @@ static int mount_kill(Unit *u, KillWho who, KillMode mode, int signo, DBusError goto finish; } - if ((q = cgroup_bonding_kill_list(m->meta.cgroup_bondings, signo, pid_set)) < 0) + if ((q = cgroup_bonding_kill_list(m->meta.cgroup_bondings, signo, false, pid_set)) < 0) if (r != -EAGAIN && r != -ESRCH && r != -ENOENT) r = q; }