chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
switch from udev keymaps to hwdb
[elogind.git]
/
src
/
core
/
main.c
diff --git
a/src/core/main.c
b/src/core/main.c
index 102cc3b3158352ca96c48263fb63d76df3fc48ad..749397578abd2be949ed30503c20f5546ad8dc47 100644
(file)
--- a/
src/core/main.c
+++ b/
src/core/main.c
@@
-1055,15
+1055,16
@@
static int prepare_reexecute(Manager *m, FILE **_f, FDSet **_fds, bool switching
assert(_f);
assert(_fds);
assert(_f);
assert(_fds);
- /* Make sure nothing is really destructed when we shut down */
- m->n_reloading ++;
-
r = manager_open_serialization(m, &f);
if (r < 0) {
log_error("Failed to create serialization file: %s", strerror(-r));
goto fail;
}
r = manager_open_serialization(m, &f);
if (r < 0) {
log_error("Failed to create serialization file: %s", strerror(-r));
goto fail;
}
+ /* Make sure nothing is really destructed when we shut down */
+ m->n_reloading ++;
+ bus_broadcast_reloading(m, true);
+
fds = fdset_new();
if (!fds) {
r = -ENOMEM;
fds = fdset_new();
if (!fds) {
r = -ENOMEM;
@@
-1345,10
+1346,10
@@
int main(int argc, char *argv[]) {
*/
hwclock_reset_timezone();
*/
hwclock_reset_timezone();
- /* Tell the kernel our time
zone */
+ /* Tell the kernel our timezone */
r = hwclock_set_timezone(NULL);
if (r < 0)
r = hwclock_set_timezone(NULL);
if (r < 0)
- log_error("Failed to set the kernel's time
zone, ignoring: %s", strerror(-r));
+ log_error("Failed to set the kernel's timezone, ignoring: %s", strerror(-r));
}
}
}
}
@@
-1514,12
+1515,7
@@
int main(int argc, char *argv[]) {
/* All other variables are left as is, so that clients
* can still read them via /proc/1/environ */
/* All other variables are left as is, so that clients
* can still read them via /proc/1/environ */
- }
- /* Move out of the way, so that we won't block unmounts */
- assert_se(chdir("/") == 0);
-
- if (arg_running_as == SYSTEMD_SYSTEM) {
/* Become a session leader if we aren't one yet. */
setsid();
/* Become a session leader if we aren't one yet. */
setsid();
@@
-1527,6
+1523,9
@@
int main(int argc, char *argv[]) {
umask(0);
}
umask(0);
}
+ /* Move out of the way, so that we won't block unmounts */
+ assert_se(chdir("/") == 0);
+
/* Make sure D-Bus doesn't fiddle with the SIGPIPE handlers */
dbus_connection_set_change_sigpipe(FALSE);
/* Make sure D-Bus doesn't fiddle with the SIGPIPE handlers */
dbus_connection_set_change_sigpipe(FALSE);
@@
-1613,7
+1612,7
@@
int main(int argc, char *argv[]) {
if (arg_running_as == SYSTEMD_SYSTEM)
bump_rlimit_nofile(&saved_rlimit_nofile);
if (arg_running_as == SYSTEMD_SYSTEM)
bump_rlimit_nofile(&saved_rlimit_nofile);
- r = manager_new(arg_running_as, &m);
+ r = manager_new(arg_running_as,
!!serialization,
&m);
if (r < 0) {
log_error("Failed to allocate manager object: %s", strerror(-r));
goto finish;
if (r < 0) {
log_error("Failed to allocate manager object: %s", strerror(-r));
goto finish;
@@
-1679,7
+1678,7
@@
int main(int argc, char *argv[]) {
log_error("Failed to load rescue target: %s", bus_error(&error, r));
dbus_error_free(&error);
goto finish;
log_error("Failed to load rescue target: %s", bus_error(&error, r));
dbus_error_free(&error);
goto finish;
- } else if (target->load_state == UNIT_ERROR || target->load_state == UNIT_
ERROR
) {
+ } else if (target->load_state == UNIT_ERROR || target->load_state == UNIT_
NOT_FOUND
) {
log_error("Failed to load rescue target: %s", strerror(-target->load_error));
goto finish;
} else if (target->load_state == UNIT_MASKED) {
log_error("Failed to load rescue target: %s", strerror(-target->load_error));
goto finish;
} else if (target->load_state == UNIT_MASKED) {
@@
-1942,6
+1941,12
@@
finish:
watchdog_close(true);
}
watchdog_close(true);
}
+ /* Avoid the creation of new processes forked by the
+ * kernel; at this point, we will not listen to the
+ * signals anyway */
+ if (detect_container(NULL) <= 0)
+ cg_uninstall_release_agent(SYSTEMD_CGROUP_CONTROLLER);
+
execve(SYSTEMD_SHUTDOWN_BINARY_PATH, (char **) command_line, env_block);
free(env_block);
log_error("Failed to execute shutdown binary, freezing: %m");
execve(SYSTEMD_SHUTDOWN_BINARY_PATH, (char **) command_line, env_block);
free(env_block);
log_error("Failed to execute shutdown binary, freezing: %m");