diff options
author | Lennart Poettering <lennart@poettering.net> | 2010-07-20 20:54:33 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2010-07-20 20:54:33 +0200 |
commit | d8d5ab981a328dd60a39cb495cbf99ca73d76f61 (patch) | |
tree | a71e4d5546fc6f6d6437a19cc1172a2d1808ffb0 | |
parent | 36adffeab07c74470bc96417b17a72b53055ee42 (diff) |
manager: write serialization to /dev/.systemd/ instead of /dev/shm
-rw-r--r-- | fixme | 5 | ||||
-rw-r--r-- | src/main.c | 2 | ||||
-rw-r--r-- | src/manager.c | 15 | ||||
-rw-r--r-- | src/manager.h | 2 |
4 files changed, 13 insertions, 11 deletions
@@ -39,13 +39,8 @@ * In command lines, support both "$FOO" and $FOO * /etc must always take precedence even if we follow symlinks! -* fix merging of device units * color aus bei stdout auf !tty -getty before prefdm - -* /lib/init/rw - * vielleicht implizit immer auf syslog dependen? * debian deadlock when partition auf noauto is. diff --git a/src/main.c b/src/main.c index d3c01b4a67..aaddce86e0 100644 --- a/src/main.c +++ b/src/main.c @@ -773,7 +773,7 @@ static int prepare_reexecute(Manager *m, FILE **_f, FDSet **_fds) { assert(_f); assert(_fds); - if ((r = manager_open_serialization(&f)) < 0) { + if ((r = manager_open_serialization(m, &f)) < 0) { log_error("Failed to create serialization faile: %s", strerror(-r)); goto fail; } diff --git a/src/manager.c b/src/manager.c index 8a9b9dd44e..bdb2b8ba3e 100644 --- a/src/manager.c +++ b/src/manager.c @@ -2279,7 +2279,7 @@ void manager_dispatch_bus_query_pid_done( UNIT_VTABLE(u)->bus_query_pid_done(u, name, pid); } -int manager_open_serialization(FILE **_f) { +int manager_open_serialization(Manager *m, FILE **_f) { char *path; mode_t saved_umask; int fd; @@ -2287,8 +2287,15 @@ int manager_open_serialization(FILE **_f) { assert(_f); - if (asprintf(&path, "/dev/shm/systemd-%u.dump-XXXXXX", (unsigned) getpid()) < 0) - return -ENOMEM; + if (m->running_as == MANAGER_SYSTEM) { + mkdir_p("/dev/.systemd", 0755); + + if (asprintf(&path, "/dev/.systemd/dump-%lu-XXXXXX", (unsigned long) getpid()) < 0) + return -ENOMEM; + } else { + if (asprintf(&path, "/tmp/systemd-dump-%lu-XXXXXX", (unsigned long) getpid()) < 0) + return -ENOMEM; + } saved_umask = umask(0077); fd = mkostemp(path, O_RDWR|O_CLOEXEC); @@ -2396,7 +2403,7 @@ int manager_reload(Manager *m) { assert(m); - if ((r = manager_open_serialization(&f)) < 0) + if ((r = manager_open_serialization(m, &f)) < 0) return r; if (!(fds = fdset_new())) { diff --git a/src/manager.h b/src/manager.h index 7328724b09..a5bc9202ff 100644 --- a/src/manager.h +++ b/src/manager.h @@ -239,7 +239,7 @@ void manager_write_utmp_runlevel(Manager *m, Unit *t); void manager_dispatch_bus_name_owner_changed(Manager *m, const char *name, const char* old_owner, const char *new_owner); void manager_dispatch_bus_query_pid_done(Manager *m, const char *name, pid_t pid); -int manager_open_serialization(FILE **_f); +int manager_open_serialization(Manager *m, FILE **_f); int manager_serialize(Manager *m, FILE *f, FDSet *fds); int manager_deserialize(Manager *m, FILE *f, FDSet *fds); |