chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
systemctl: make upstart glue code talk to upstart via private abstarct bus and verify...
[elogind.git]
/
src
/
mount.c
diff --git
a/src/mount.c
b/src/mount.c
index ea81f5fee6db6940a629ace9d14b423ffe08fd36..081e92c029a172b43cf0c65bb746cc935ae3147d 100644
(file)
--- a/
src/mount.c
+++ b/
src/mount.c
@@
-35,6
+35,7
@@
#include "unit-name.h"
#include "mount.h"
#include "dbus-mount.h"
#include "unit-name.h"
#include "mount.h"
#include "dbus-mount.h"
+#include "special.h"
static const UnitActiveState state_translation_table[_MOUNT_STATE_MAX] = {
[MOUNT_DEAD] = UNIT_INACTIVE,
static const UnitActiveState state_translation_table[_MOUNT_STATE_MAX] = {
[MOUNT_DEAD] = UNIT_INACTIVE,
@@
-250,10
+251,10
@@
static int mount_add_target_links(Mount *m) {
else
target = SPECIAL_LOCAL_FS_TARGET;
else
target = SPECIAL_LOCAL_FS_TARGET;
- if ((r = manager_load_unit(
UNIT(m)
->meta.manager, target, NULL, &tu)) < 0)
+ if ((r = manager_load_unit(
m
->meta.manager, target, NULL, &tu)) < 0)
return r;
return r;
- if (automount && m->meta.manager->running_as
!= MANAGER_SESSION
) {
+ if (automount && m->meta.manager->running_as
== MANAGER_SYSTEM
) {
Unit *am;
if ((r = unit_load_related_unit(UNIT(m), ".automount", &am)) < 0)
Unit *am;
if ((r = unit_load_related_unit(UNIT(m), ".automount", &am)) < 0)
@@
-267,7
+268,7
@@
static int mount_add_target_links(Mount *m) {
} else {
if (!noauto && handle)
} else {
if (!noauto && handle)
- if (user || m->meta.manager->running_as
!= MANAGER_SESSION
)
+ if (user || m->meta.manager->running_as
== MANAGER_SYSTEM
)
if ((r = unit_add_dependency(tu, UNIT_WANTS, UNIT(m), true)) < 0)
return r;
if ((r = unit_add_dependency(tu, UNIT_WANTS, UNIT(m), true)) < 0)
return r;
@@
-293,15
+294,20
@@
static int mount_verify(Mount *m) {
free(e);
if (!b) {
free(e);
if (!b) {
- log_error("%s's Where setting doesn't match unit name. Refusing.",
UNIT(m)
->meta.id);
+ log_error("%s's Where setting doesn't match unit name. Refusing.",
m
->meta.id);
return -EINVAL;
}
if (m->meta.fragment_path && !m->parameters_fragment.what) {
return -EINVAL;
}
if (m->meta.fragment_path && !m->parameters_fragment.what) {
- log_error("%s's What setting is missing. Refusing.",
UNIT(m)
->meta.id);
+ log_error("%s's What setting is missing. Refusing.",
m
->meta.id);
return -EBADMSG;
}
return -EBADMSG;
}
+ if (m->exec_context.pam_name && m->kill_mode != KILL_CONTROL_GROUP) {
+ log_error("%s has PAM enabled. Kill mode must be set to 'control-group'. Refusing.", m->meta.id);
+ return -EINVAL;
+ }
+
return 0;
}
return 0;
}
@@
-340,9
+346,7
@@
static int mount_load(Unit *u) {
what = m->parameters_proc_self_mountinfo.what;
if (what)
what = m->parameters_proc_self_mountinfo.what;
if (what)
- if ((r = unit_add_node_link(u, what,
- (u->meta.manager->running_as == MANAGER_INIT ||
- u->meta.manager->running_as == MANAGER_SYSTEM))) < 0)
+ if ((r = unit_add_node_link(u, what, u->meta.manager->running_as == MANAGER_SYSTEM)) < 0)
return r;
if ((r = mount_add_mount_links(m)) < 0)
return r;
if ((r = mount_add_mount_links(m)) < 0)
@@
-421,7
+425,7
@@
static void mount_set_state(Mount *m, MountState state) {
if (state != old_state)
log_debug("%s changed %s -> %s",
if (state != old_state)
log_debug("%s changed %s -> %s",
-
UNIT(m)
->meta.id,
+
m
->meta.id,
mount_state_to_string(old_state),
mount_state_to_string(state));
mount_state_to_string(old_state),
mount_state_to_string(state));
@@
-506,8
+510,8
@@
static void mount_dump(Unit *u, FILE *f, const char *prefix) {
if (m->control_pid > 0)
fprintf(f,
if (m->control_pid > 0)
fprintf(f,
- "%sControl PID: %l
l
u\n",
- prefix, (unsigned long
long
) m->control_pid);
+ "%sControl PID: %lu\n",
+ prefix, (unsigned long) m->control_pid);
exec_context_dump(&m->exec_context, f, prefix);
}
exec_context_dump(&m->exec_context, f, prefix);
}
@@
-530,8
+534,8
@@
static int mount_spawn(Mount *m, ExecCommand *c, pid_t *_pid) {
m->meta.manager->environment,
true,
true,
m->meta.manager->environment,
true,
true,
-
UNIT(m)
->meta.manager->confirm_spawn,
-
UNIT(m)
->meta.cgroup_bondings,
+
m
->meta.manager->confirm_spawn,
+
m
->meta.cgroup_bondings,
&pid)) < 0)
goto fail;
&pid)) < 0)
goto fail;
@@
-583,7
+587,7
@@
static void mount_enter_signal(Mount *m, MountState state, bool success) {
if (m->kill_mode == KILL_CONTROL_GROUP) {
if (m->kill_mode == KILL_CONTROL_GROUP) {
- if ((r = cgroup_bonding_kill_list(
UNIT(m)
->meta.cgroup_bondings, sig)) < 0) {
+ if ((r = cgroup_bonding_kill_list(
m
->meta.cgroup_bondings, sig)) < 0) {
if (r != -EAGAIN && r != -ESRCH)
goto fail;
} else
if (r != -EAGAIN && r != -ESRCH)
goto fail;
} else
@@
-610,7
+614,7
@@
static void mount_enter_signal(Mount *m, MountState state, bool success) {
return;
fail:
return;
fail:
- log_warning("%s failed to kill processes: %s",
UNIT(m)
->meta.id, strerror(-r));
+ log_warning("%s failed to kill processes: %s",
m
->meta.id, strerror(-r));
if (state == MOUNT_REMOUNTING_SIGTERM || state == MOUNT_REMOUNTING_SIGKILL)
mount_enter_mounted(m, false);
if (state == MOUNT_REMOUNTING_SIGTERM || state == MOUNT_REMOUNTING_SIGKILL)
mount_enter_mounted(m, false);
@@
-646,7
+650,7
@@
static void mount_enter_unmounting(Mount *m, bool success) {
return;
fail:
return;
fail:
- log_warning("%s failed to run
umount exectuable: %s", UNIT(m)
->meta.id, strerror(-r));
+ log_warning("%s failed to run
'umount' task: %s", m
->meta.id, strerror(-r));
mount_enter_mounted(m, false);
}
mount_enter_mounted(m, false);
}
@@
-689,7
+693,7
@@
static void mount_enter_mounting(Mount *m) {
return;
fail:
return;
fail:
- log_warning("%s failed to run
mount exectuable: %s", UNIT(m)
->meta.id, strerror(-r));
+ log_warning("%s failed to run
'mount' task: %s", m
->meta.id, strerror(-r));
mount_enter_dead(m, false);
}
mount_enter_dead(m, false);
}