From: Lennart Poettering Date: Fri, 5 Apr 2019 16:14:43 +0000 (+0200) Subject: nspawn: create boot_id and kmsg files for overmounting in /run, not /tmp X-Git-Tag: v242-rc4~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1eacc47062eecd1dda0fe5ba3f797bbd81988f37;p=thirdparty%2Fsystemd.git nspawn: create boot_id and kmsg files for overmounting in /run, not /tmp /tmp might not be mounted at all yet (given that we support SYSTEMD_NSPAWN_TMPFS_TMP=0 to turn this off), and /tmp is a dir systemd usually tries to unmount during shutdown (unlike /run), and we shouldn't keep it busy. Hence let's just move these deleted files to /run so that we don't keep /tmp needlessly busy. --- diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 5ab4b480b92..3b0ecb1db97 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -1849,10 +1849,9 @@ static int setup_boot_id(void) { const char *to; int r; - /* Generate a new randomized boot ID, so that each boot-up of - * the container gets a new one */ + /* Generate a new randomized boot ID, so that each boot-up of the container gets a new one */ - r = tempfn_random_child(NULL, "proc-sys-kernel-random-boot-id", &path); + r = tempfn_random_child("/run", "proc-sys-kernel-random-boot-id", &path); if (r < 0) return log_error_errno(r, "Failed to generate random boot ID path: %m"); @@ -2096,19 +2095,18 @@ static int setup_kmsg(int kmsg_socket) { _cleanup_free_ char *fifo = NULL; _cleanup_close_ int fd = -1; _cleanup_umask_ mode_t u; - const char *to; int r; assert(kmsg_socket >= 0); u = umask(0000); - /* We create the kmsg FIFO as as temporary file in /tmp, but immediately delete it after bind mounting it to + /* We create the kmsg FIFO as as temporary file in /run, but immediately delete it after bind mounting it to * /proc/kmsg. While FIFOs on the reading side behave very similar to /proc/kmsg, their writing side behaves * differently from /dev/kmsg in that writing blocks when nothing is reading. In order to avoid any problems * with containers deadlocking due to this we simply make /dev/kmsg unavailable to the container. */ - r = tempfn_random_child(NULL, "proc-kmsg", &fifo); + r = tempfn_random_child("/run", "proc-kmsg", &fifo); if (r < 0) return log_error_errno(r, "Failed to generate kmsg path: %m"); @@ -2116,9 +2114,8 @@ static int setup_kmsg(int kmsg_socket) { return log_error_errno(errno, "mkfifo() for /run/kmsg failed: %m"); from = TAKE_PTR(fifo); - to = "/proc/kmsg"; - r = mount_verbose(LOG_ERR, from, to, NULL, MS_BIND, NULL); + r = mount_verbose(LOG_ERR, from, "/proc/kmsg", NULL, MS_BIND, NULL); if (r < 0) return r;