X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fudev%2Fudevd.c;h=2ac9fde04914508e9617eb41f8a79d9fc2fd2e98;hp=0d85960e63c71ce6c2191286245f071fd73d3fc5;hb=145dae7eb3367933e0d0bfcde3a7a77bb549aa61;hpb=b27ee00bf5e377a4b59b454c68c8617ea9666bc8 diff --git a/src/udev/udevd.c b/src/udev/udevd.c index 0d85960e6..2ac9fde04 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -262,6 +262,9 @@ static void worker_new(struct event *event) /* request TERM signal if parent exits */ prctl(PR_SET_PDEATHSIG, SIGTERM); + /* reset OOM score, we only protect the main daemon */ + write_one_line_file("/proc/self/oom_score_adj", "0"); + for (;;) { struct udev_event *udev_event; struct worker_message msg; @@ -850,7 +853,7 @@ static void static_dev_create_from_modules(struct udev *udev) continue; util_strscpyl(filename, sizeof(filename), "/dev/", devname, NULL); - mkdir_parents(filename, 0755); + mkdir_parents_label(filename, 0755); label_context_set(filename, mode); log_debug("mknod '%s' %c%u:%u\n", filename, type, maj, min); if (mknod(filename, mode, makedev(maj, min)) < 0 && errno == EEXIST) @@ -1230,7 +1233,6 @@ int main(int argc, char *argv[]) if (daemonize) { pid_t pid; - int fd; pid = fork(); switch (pid) { @@ -1247,11 +1249,7 @@ int main(int argc, char *argv[]) setsid(); - fd = open("/proc/self/oom_score_adj", O_RDWR|O_CLOEXEC); - if (fd >= 0) { - write(fd, "-1000", 5); - close(fd); - } + write_one_line_file("/proc/self/oom_score_adj", "-1000"); } else { sd_notify(1, "READY=1"); } @@ -1353,9 +1351,9 @@ int main(int argc, char *argv[]) /* set value depending on the amount of RAM */ if (memsize > 0) - children_max = 128 + (memsize / 8); + children_max = 16 + (memsize / 8); else - children_max = 128; + children_max = 16; } log_debug("set children_max to %u\n", children_max);