]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
nspawn: Only bind-mount directory when necessary.
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Sat, 7 Dec 2019 11:43:39 +0000 (12:43 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 12 Dec 2019 19:15:10 +0000 (20:15 +0100)
src/nspawn/nspawn.c

index b85356e1ad01e400af26c1bd3972ef369d95d24c..8a55ab20fa7dcbd3b3cee157f7b5e490dac8bdd5 100644 (file)
@@ -3343,13 +3343,6 @@ static int outer_child(
                         return r;
 
                 directory = "/run/systemd/nspawn-root";
-
-        } else if (!dissected_image) {
-                /* Turn directory into bind mount (we need that so that we can move the bind mount to root
-                 * later on). */
-                r = mount_verbose(LOG_ERR, directory, directory, NULL, MS_BIND|MS_REC, NULL);
-                if (r < 0)
-                        return r;
         }
 
         r = setup_pivot_root(
@@ -3377,6 +3370,13 @@ static int outer_child(
         if (r < 0)
                 return r;
 
+        /* Make sure we always have a mount that we can move to root later on. */
+        if (!path_is_mount_point(directory, NULL, 0)) {
+                r = mount_verbose(LOG_ERR, directory, directory, NULL, MS_BIND|MS_REC, NULL);
+                if (r < 0)
+                        return r;
+        }
+
         if (dissected_image) {
                 /* Now we know the uid shift, let's now mount everything else that might be in the image. */
                 r = dissected_image_mount(dissected_image, directory, arg_uid_shift,