]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
dissect-image: fix volatile images
authorLennart Poettering <lennart@poettering.net>
Thu, 11 Mar 2021 10:44:03 +0000 (11:44 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 11 Mar 2021 10:48:31 +0000 (11:48 +0100)
This makes sure nspawn's --volatile=yes switch works again: there we
have a read-only image that is overmounted by a tmpfs (with the
exception of /usr). This we need to mkdir all mount points even though
the image is read-only.

Hence, let's drop the optimizatio of avoiding mkdir() on images that are
read-only, it's wrong and misleading here, since the image itself might
be read-only but our mounts are not.

src/shared/dissect-image.c

index d9053087628ce15a7787ac380c5a92892a2edffc..6f9a4576144bf5f8697fcb8deb055b9c33c130cb 100644 (file)
@@ -1344,12 +1344,10 @@ static int mount_partition(
         }
 
         if (directory) {
-                if (!FLAGS_SET(flags, DISSECT_IMAGE_READ_ONLY)) {
-                        /* Automatically create missing mount points inside the image, if necessary. */
-                        r = mkdir_p_root(where, directory, uid_shift, (gid_t) uid_shift, 0755);
-                        if (r < 0)
-                                return r;
-                }
+                /* Automatically create missing mount points inside the image, if necessary. */
+                r = mkdir_p_root(where, directory, uid_shift, (gid_t) uid_shift, 0755);
+                if (r < 0 && r != -EROFS)
+                        return r;
 
                 r = chase_symlinks(directory, where, CHASE_PREFIX_ROOT, &chased, NULL);
                 if (r < 0)