manager: write serialization to /dev/.systemd/ instead of /dev/shm

This commit is contained in:
Lennart Poettering 2010-07-20 20:54:33 +02:00
parent 36adffeab0
commit d8d5ab981a
4 changed files with 13 additions and 11 deletions

5
fixme
View file

@ -39,13 +39,8 @@
* In command lines, support both "$FOO" and $FOO * In command lines, support both "$FOO" and $FOO
* /etc must always take precedence even if we follow symlinks! * /etc must always take precedence even if we follow symlinks!
* fix merging of device units
* color aus bei stdout auf !tty * color aus bei stdout auf !tty
getty before prefdm
* /lib/init/rw
* vielleicht implizit immer auf syslog dependen? * vielleicht implizit immer auf syslog dependen?
* debian deadlock when partition auf noauto is. * debian deadlock when partition auf noauto is.

View file

@ -773,7 +773,7 @@ static int prepare_reexecute(Manager *m, FILE **_f, FDSet **_fds) {
assert(_f); assert(_f);
assert(_fds); 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)); log_error("Failed to create serialization faile: %s", strerror(-r));
goto fail; goto fail;
} }

View file

@ -2279,7 +2279,7 @@ void manager_dispatch_bus_query_pid_done(
UNIT_VTABLE(u)->bus_query_pid_done(u, name, pid); 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; char *path;
mode_t saved_umask; mode_t saved_umask;
int fd; int fd;
@ -2287,8 +2287,15 @@ int manager_open_serialization(FILE **_f) {
assert(_f); assert(_f);
if (asprintf(&path, "/dev/shm/systemd-%u.dump-XXXXXX", (unsigned) getpid()) < 0) if (m->running_as == MANAGER_SYSTEM) {
return -ENOMEM; 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); saved_umask = umask(0077);
fd = mkostemp(path, O_RDWR|O_CLOEXEC); fd = mkostemp(path, O_RDWR|O_CLOEXEC);
@ -2396,7 +2403,7 @@ int manager_reload(Manager *m) {
assert(m); assert(m);
if ((r = manager_open_serialization(&f)) < 0) if ((r = manager_open_serialization(m, &f)) < 0)
return r; return r;
if (!(fds = fdset_new())) { if (!(fds = fdset_new())) {

View file

@ -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_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); 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_serialize(Manager *m, FILE *f, FDSet *fds);
int manager_deserialize(Manager *m, FILE *f, FDSet *fds); int manager_deserialize(Manager *m, FILE *f, FDSet *fds);