dev: use /dev/.run/systemd as runtime directory, instead of /dev/.systemd

This commit is contained in:
Lennart Poettering 2011-03-09 22:45:47 +01:00
parent 29d958ce2b
commit b925e72633
21 changed files with 60 additions and 57 deletions

4
TODO
View File

@ -20,10 +20,14 @@ F15:
* save/restore tool for SysV as requested by FPC
* optionally create watched directories in .path units
Features:
* consider services with no [Install] section and stored in /lib enabled by "systemctl is-enabled"
* store time when conditions where checked to inform admins about whether a unit was considered at all
* consider services with any kind of link in /etc/systemd/system enabled
* show failure error string in "systemctl status"

View File

@ -123,7 +123,7 @@
reference implementation.</para>
<para>Internally, this function creates a file in
<filename>/dev/.systemd/readahead/</filename> which is
<filename>/dev/.run/systemd/readahead/</filename> which is
then used as flag file to notify the read-ahead
subsystem.</para>

View File

@ -223,7 +223,7 @@ static int create_socket(char **name) {
zero(sa);
sa.un.sun_family = AF_UNIX;
snprintf(sa.un.sun_path, sizeof(sa.un.sun_path)-1, "/dev/.systemd/ask-password/sck.%llu", random_ull());
snprintf(sa.un.sun_path, sizeof(sa.un.sun_path)-1, "/dev/.run/systemd/ask-password/sck.%llu", random_ull());
if (bind(fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + strlen(sa.un.sun_path)) < 0) {
r = -errno;
@ -265,7 +265,7 @@ int ask_password_agent(
_FD_MAX
};
char temp[] = "/dev/.systemd/ask-password/tmp.XXXXXX";
char temp[] = "/dev/.run/systemd/ask-password/tmp.XXXXXX";
char final[sizeof(temp)] = "";
int fd = -1, r;
FILE *f = NULL;
@ -276,7 +276,7 @@ int ask_password_agent(
assert(_passphrases);
mkdir_p("/dev/.systemd/ask-password", 0755);
mkdir_p("/dev/.run/systemd/ask-password", 0755);
if ((fd = mkostemp(temp, O_CLOEXEC|O_CREAT|O_WRONLY)) < 0) {
log_error("Failed to create password file: %m");

View File

@ -262,7 +262,7 @@ int main(int argc, char *argv[]) {
r = EXIT_SUCCESS;
if (status.si_code == CLD_EXITED && (status.si_status & 1))
touch("/dev/.systemd/quotacheck");
touch("/dev/.run/systemd/quotacheck");
finish:
if (udev_device)

View File

@ -91,7 +91,7 @@ public class MyStatusIcon : StatusIcon {
GLib.Object(icon_name : "dialog-password");
set_title("System Password");
directory = File.new_for_path("/dev/.systemd/ask-password/");
directory = File.new_for_path("/dev/.run/systemd/ask-password/");
file_monitor = directory.monitor_directory(0);
file_monitor.changed.connect(file_monitor_changed);

View File

@ -142,20 +142,20 @@ int machine_id_setup(void) {
fd = -1;
/* Hmm, we couldn't write it? So let's write it to
* /dev/.systemd/machine-id as a replacement */
* /dev/.run/systemd/machine-id as a replacement */
mkdir_p("/dev/.systemd", 0755);
mkdir_p("/dev/.run/systemd", 0755);
if ((r = write_one_line_file("/dev/.systemd/machine-id", id)) < 0) {
log_error("Cannot write /dev/.systemd/machine-id: %s", strerror(-r));
if ((r = write_one_line_file("/dev/.run/systemd/machine-id", id)) < 0) {
log_error("Cannot write /dev/.run/systemd/machine-id: %s", strerror(-r));
unlink("/dev/.systemd/machine-id");
unlink("/dev/.run/systemd/machine-id");
goto finish;
}
/* And now, let's mount it over */
r = mount("/dev/.systemd/machine-id", "/etc/machine-id", "bind", MS_BIND|MS_RDONLY, NULL) < 0 ? -errno : 0;
unlink("/dev/.systemd/machine-id");
r = mount("/dev/.run/systemd/machine-id", "/etc/machine-id", "bind", MS_BIND|MS_RDONLY, NULL) < 0 ? -errno : 0;
unlink("/dev/.run/systemd/machine-id");
if (r < 0)
log_error("Failed to mount /etc/machine-id: %s", strerror(-r));

View File

@ -1044,7 +1044,7 @@ int main(int argc, char *argv[]) {
/* If Plymouth is being run make sure we show the status, so
* that there's something nice to see when people press Esc */
if (access("/dev/.systemd/plymouth", F_OK) >= 0)
if (access("/dev/.run/systemd/plymouth", F_OK) >= 0)
arg_show_status = true;
if (arg_action == ACTION_HELP) {
@ -1131,8 +1131,6 @@ int main(int argc, char *argv[]) {
machine_id_setup();
loopback_setup();
mkdir_p("/dev/.systemd/ask-password/", 0755);
test_mtab();
test_usr();
}

View File

@ -2550,22 +2550,20 @@ void manager_dispatch_bus_query_pid_done(
}
int manager_open_serialization(Manager *m, FILE **_f) {
char *path;
char *path = NULL;
mode_t saved_umask;
int fd;
FILE *f;
assert(_f);
if (m->running_as == MANAGER_SYSTEM) {
mkdir_p("/dev/.systemd", 0755);
if (m->running_as == MANAGER_SYSTEM)
asprintf(&path, "/dev/.run/systemd/dump-%lu-XXXXXX", (unsigned long) getpid());
else
asprintf(&path, "/tmp/systemd-dump-%lu-XXXXXX", (unsigned long) getpid());
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;
}
if (!path)
return -ENOMEM;
saved_umask = umask(0077);
fd = mkostemp(path, O_RDWR|O_CLOEXEC);
@ -2862,7 +2860,7 @@ void manager_run_generators(Manager *m) {
if (!m->generator_unit_path) {
char *p;
char system_path[] = "/dev/.systemd/generator-XXXXXX",
char system_path[] = "/dev/.run/systemd/generator-XXXXXX",
user_path[] = "/tmp/systemd-generator-XXXXXX";
if (!(p = mkdtemp(m->running_as == MANAGER_SYSTEM ? system_path : user_path))) {

View File

@ -242,7 +242,7 @@ int mount_setup(void) {
* appropriate labels, after mounting. The other virtual API
* file systems do not need. */
if (unlink("/dev/.systemd/relabel-devtmpfs") >= 0)
if (unlink("/dev/.systemd-relabel-devtmpfs") >= 0)
nftw("/dev", nftw_cb, 64, FTW_MOUNT|FTW_PHYS);
/* Create a few default symlinks, which are normally created
@ -252,5 +252,9 @@ int mount_setup(void) {
NULSTR_FOREACH_PAIR(j, k, symlinks)
symlink_and_label(j, k);
/* Create a few directories we always want around */
mkdir("/dev/.run/systemd", 0755);
mkdir("/dev/.run/systemd/ask-password", 0755);
return mount_cgroup_controllers();
}

View File

@ -183,7 +183,7 @@ int lookup_paths_init(LookupPaths *p, ManagerRunningAs running_as) {
if (!(p->unit_path = strv_new(
/* If you modify this you also want to modify
* systemdsystemunitpath= in systemd.pc.in! */
"/dev/.systemd/system",
"/dev/.run/systemd/system",
SYSTEM_CONFIG_UNIT_PATH,
"/etc/systemd/system",
"/usr/local/share/systemd/system",

View File

@ -94,7 +94,7 @@ int main(int argc, char *argv[]) {
if (arg_skip)
return 0;
if (access("/dev/.systemd/quotacheck", F_OK) < 0)
if (access("/dev/.run/systemd/quotacheck", F_OK) < 0)
return 0;
}

View File

@ -289,13 +289,13 @@ static int collect(const char *root) {
log_debug("Collecting...");
if (access("/dev/.systemd/readahead/cancel", F_OK) >= 0) {
if (access("/dev/.run/systemd/readahead/cancel", F_OK) >= 0) {
log_debug("Collection canceled");
r = -ECANCELED;
goto finish;
}
if (access("/dev/.systemd/readahead/done", F_OK) >= 0) {
if (access("/dev/.run/systemd/readahead/done", F_OK) >= 0) {
log_debug("Got termination request");
goto done;
}

View File

@ -167,11 +167,11 @@ int open_inotify(void) {
return -errno;
}
mkdir("/dev/.systemd", 0755);
mkdir("/dev/.systemd/readahead", 0755);
mkdir("/dev/.run/systemd", 0755);
mkdir("/dev/.run/systemd/readahead", 0755);
if (inotify_add_watch(fd, "/dev/.systemd/readahead", IN_CREATE) < 0) {
log_error("Failed to watch /dev/.systemd/readahead: %m");
if (inotify_add_watch(fd, "/dev/.run/systemd/readahead", IN_CREATE) < 0) {
log_error("Failed to watch /dev/.run/systemd/readahead: %m");
close_nointr_nofail(fd);
return -errno;
}
@ -183,10 +183,10 @@ ReadaheadShared *shared_get(void) {
int fd;
ReadaheadShared *m = NULL;
mkdir("/dev/.systemd", 0755);
mkdir("/dev/.systemd/readahead", 0755);
mkdir("/dev/.run/systemd", 0755);
mkdir("/dev/.run/systemd/readahead", 0755);
if ((fd = open("/dev/.systemd/readahead/shared", O_CREAT|O_RDWR|O_CLOEXEC, 0644)) < 0) {
if ((fd = open("/dev/.run/systemd/readahead/shared", O_CREAT|O_RDWR|O_CLOEXEC, 0644)) < 0) {
log_error("Failed to create shared memory segment: %m");
goto finish;
}

View File

@ -192,7 +192,7 @@ static int replay(const char *root) {
log_debug("Replaying...");
if (access("/dev/.systemd/readahead/noreplay", F_OK) >= 0) {
if (access("/dev/.run/systemd/readahead/noreplay", F_OK) >= 0) {
log_debug("Got termination request");
goto done;
}

View File

@ -42,8 +42,8 @@ static int touch(const char *path) {
#if !defined(DISABLE_SYSTEMD) && defined(__linux__)
int fd;
mkdir("/dev/.systemd", 0755);
mkdir("/dev/.systemd/readahead", 0755);
mkdir("/dev/.run/systemd", 0755);
mkdir("/dev/.run/systemd/readahead", 0755);
if ((fd = open(path, O_WRONLY|O_CREAT|O_CLOEXEC|O_NOCTTY, 0666)) < 0)
return -errno;
@ -66,11 +66,11 @@ int sd_readahead(const char *action) {
return -EINVAL;
if (strcmp(action, "cancel") == 0)
return touch("/dev/.systemd/readahead/cancel");
return touch("/dev/.run/systemd/readahead/cancel");
else if (strcmp(action, "done") == 0)
return touch("/dev/.systemd/readahead/done");
return touch("/dev/.run/systemd/readahead/done");
else if (strcmp(action, "noreplay") == 0)
return touch("/dev/.systemd/readahead/noreplay");
return touch("/dev/.run/systemd/readahead/noreplay");
return -EINVAL;
}

View File

@ -45,8 +45,7 @@ int selinux_setup(char *const argv[]) {
/* Before we load the policy we create a flag file to ensure
* that after the reexec we iterate through /dev to relabel
* things. */
mkdir_p("/dev/.systemd", 0755);
touch("/dev/.systemd/relabel-devtmpfs");
touch("/dev/.systemd-relabel-devtmpfs");
if (selinux_init_load_policy(&enforce) == 0) {
log_debug("Successfully loaded SELinux policy, reexecuting.");
@ -61,7 +60,7 @@ int selinux_setup(char *const argv[]) {
} else {
log_full(enforce > 0 ? LOG_ERR : LOG_WARNING, "Failed to load SELinux policy.");
unlink("/dev/.systemd/relabel-devtmpfs");
unlink("/dev/.systemd-relabel-devtmpfs");
if (enforce > 0)
return -EIO;

View File

@ -431,7 +431,7 @@ static int wall_tty_block(void) {
if ((r = get_ctty_devnr(&devnr)) < 0)
return -r;
if (asprintf(&p, "/dev/.systemd/ask-password-block/%u:%u", major(devnr), minor(devnr)) < 0)
if (asprintf(&p, "/dev/.run/systemd/ask-password-block/%u:%u", major(devnr), minor(devnr)) < 0)
return -ENOMEM;
mkdir_parents(p, 0700);
@ -475,7 +475,7 @@ static bool wall_tty_match(const char *path) {
* advantage that the block will automatically go away if the
* process dies. */
if (asprintf(&p, "/dev/.systemd/ask-password-block/%u:%u", major(st.st_rdev), minor(st.st_rdev)) < 0)
if (asprintf(&p, "/dev/.run/systemd/ask-password-block/%u:%u", major(st.st_rdev), minor(st.st_rdev)) < 0)
return true;
fd = open(p, O_WRONLY|O_CLOEXEC|O_NONBLOCK|O_NOCTTY);
@ -494,7 +494,7 @@ static int show_passwords(void) {
struct dirent *de;
int r = 0;
if (!(d = opendir("/dev/.systemd/ask-password"))) {
if (!(d = opendir("/dev/.run/systemd/ask-password"))) {
if (errno == ENOENT)
return 0;
@ -519,7 +519,7 @@ static int show_passwords(void) {
if (!startswith(de->d_name, "ask."))
continue;
if (!(p = strappend("/dev/.systemd/ask-password/", de->d_name))) {
if (!(p = strappend("/dev/.run/systemd/ask-password/", de->d_name))) {
log_error("Out of memory");
r = -ENOMEM;
goto finish;
@ -558,14 +558,14 @@ static int watch_passwords(void) {
tty_block_fd = wall_tty_block();
mkdir_p("/dev/.systemd/ask-password", 0755);
mkdir_p("/dev/.run/systemd/ask-password", 0755);
if ((notify = inotify_init1(IN_CLOEXEC)) < 0) {
r = -errno;
goto finish;
}
if (inotify_add_watch(notify, "/dev/.systemd/ask-password", IN_CLOSE_WRITE|IN_MOVED_TO) < 0) {
if (inotify_add_watch(notify, "/dev/.run/systemd/ask-password", IN_CLOSE_WRITE|IN_MOVED_TO) < 0) {
r = -errno;
goto finish;
}

View File

@ -11,7 +11,7 @@ systemdsystemunitdir=@systemunitdir@
systemduserunitdir=@pkgdatadir@/user
systemdsystemconfdir=@pkgsysconfdir@/system
systemduserconfdir=@pkgsysconfdir@/user
systemdsystemunitpath=/dev/.systemd/system:${systemdsystemconfdir}:/etc/systemd/system:/usr/local/share/systemd/system:/usr/share/systemd/system:/lib/systemd/system:${systemdsystemunitdir}
systemdsystemunitpath=/dev/.run/systemd/system:${systemdsystemconfdir}:/etc/systemd/system:/usr/local/share/systemd/system:/usr/share/systemd/system:/lib/systemd/system:${systemdsystemunitdir}
Name: systemd
Description: systemd System and Service Manager

View File

@ -12,4 +12,4 @@ Conflicts=shutdown.target
Before=basic.target shutdown.target
[Path]
DirectoryNotEmpty=/dev/.systemd/ask-password
DirectoryNotEmpty=/dev/.run/systemd/ask-password

View File

@ -12,4 +12,4 @@ Conflicts=shutdown.target systemd-ask-password-console.path systemd-ask-password
Before=basic.target shutdown.target
[Path]
DirectoryNotEmpty=/dev/.systemd/ask-password
DirectoryNotEmpty=/dev/.run/systemd/ask-password

View File

@ -12,4 +12,4 @@ Conflicts=shutdown.target
Before=basic.target shutdown.target
[Path]
DirectoryNotEmpty=/dev/.systemd/ask-password
DirectoryNotEmpty=/dev/.run/systemd/ask-password