From f1d19aa412b34fe025dfd48a5c79d34fdd0f9528 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 7 Apr 2011 21:22:41 +0200 Subject: [PATCH] manager: no need to use randomized generator dir when running as system manager --- TODO | 10 ++-------- src/manager.c | 21 +++++++++++++++------ src/mount-setup.c | 12 ++++++------ 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/TODO b/TODO index af264d3a2..5a3944fe0 100644 --- a/TODO +++ b/TODO @@ -2,9 +2,6 @@ F15: * swap units that are activated by one name but shown in the kernel under another are semi-broken -* isolate multi-user.target doesn't start a getty@tty1 if we run it from graphical.target - https://bugzilla.redhat.com/show_bug.cgi?id=688661 - * NFS, networkmanager ordering issue (PENDING) * NM should pull in network.target (PENDING) @@ -24,6 +21,8 @@ F15: * 0595f9a1c182a84581749823ef47c5f292e545f9 is borked, freezes shutdown (path: after installing inotify watches, recheck file again to fix race) +* active_enter timestamps borked? + Features: * fix alsa mixer restore to not print error when no config is stored @@ -31,8 +30,6 @@ Features: * don't trim empty cgroups https://bugzilla.redhat.com/show_bug.cgi?id=678555 -* serialize used job ids and max job id - * show enablement status in systemctl status * expose monotonic timestamps on the bus and make systemd-analyze use it @@ -74,9 +71,6 @@ Features: * when key file cannot be found, read it from kbd in cryptsetup -* get rid of random file name in generator directory? - /run/systemd/generator-IH1vFu - * add switch to systemctl to show enabled but not running services. Or another switch that shows service that have been running since booting but aren't running anymore. diff --git a/src/manager.c b/src/manager.c index 5cb3588c9..ad627fc66 100644 --- a/src/manager.c +++ b/src/manager.c @@ -2920,13 +2920,22 @@ void manager_run_generators(Manager *m) { } if (!m->generator_unit_path) { - char *p; - char system_path[] = "/run/systemd/generator-XXXXXX", - user_path[] = "/tmp/systemd-generator-XXXXXX"; + const char *p; + char user_path[] = "/tmp/systemd-generator-XXXXXX"; - if (!(p = mkdtemp(m->running_as == MANAGER_SYSTEM ? system_path : user_path))) { - log_error("Failed to generate generator directory: %m"); - goto finish; + if (m->running_as == MANAGER_SYSTEM) { + p = "/run/systemd/generator"; + + if (mkdir_p(p, 0755) < 0) { + log_error("Failed to create generator directory: %m"); + goto finish; + } + + } else { + if (!(p = mkdtemp(user_path))) { + log_error("Failed to create generator directory: %m"); + goto finish; + } } if (!(m->generator_unit_path = strdup(p))) { diff --git a/src/mount-setup.c b/src/mount-setup.c index 4fa8ae5fb..85205832a 100644 --- a/src/mount-setup.c +++ b/src/mount-setup.c @@ -242,22 +242,22 @@ int mount_setup(void) { if ((r = mount_one(mount_table+i)) < 0) return r; - /* Nodes in devtmpfs need to be manually updated for the - * appropriate labels, after mounting. The other virtual API - * file systems do not need that. */ - + /* Nodes in devtmpfs and /run need to be manually updated for + * the appropriate labels, after mounting. The other virtual + * API file systems like /sys and /proc do not need that, they + * use the same label for all their files. */ if (unlink("/dev/.systemd-relabel-run-dev") >= 0) { nftw("/dev", nftw_cb, 64, FTW_MOUNT|FTW_PHYS); nftw("/run", nftw_cb, 64, FTW_MOUNT|FTW_PHYS); } /* Create a few default symlinks, which are normally created - * bei udevd, but some scripts might need them before we start + * by udevd, but some scripts might need them before we start * udevd. */ - NULSTR_FOREACH_PAIR(j, k, symlinks) symlink_and_label(j, k); + /* Create a few directories we always want around */ mkdir("/run/systemd", 0755); mkdir("/run/systemd/ask-password", 0755);