From: Lennart Poettering Date: Thu, 11 Mar 2021 10:44:03 +0000 (+0100) Subject: dissect-image: fix volatile images X-Git-Tag: v248-rc3~6^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=334eb5b0999d51efbc38b775fca92a2556c85830;p=thirdparty%2Fsystemd.git dissect-image: fix volatile images 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. --- diff --git a/src/shared/dissect-image.c b/src/shared/dissect-image.c index d9053087628..6f9a4576144 100644 --- a/src/shared/dissect-image.c +++ b/src/shared/dissect-image.c @@ -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)