nspawn: only remount /usr/ with idmap when --volatile=yes

The root directory is already mounted with a picked UID shift, hence
it is not necessary to remount with idmap. However, /usr/ is a bind-mount,
hence it must be remounted with idmap.

With this change, now '-U --volatile=yes' works fine.

Fixes #34254.
This commit is contained in:
Yu Watanabe
2024-09-06 13:24:12 +09:00
parent 2c2511aa73
commit 025be2361b
+7 -4
View File
@@ -3995,11 +3995,14 @@ static int outer_child(
arg_uid_shift != 0) {
_cleanup_strv_free_ char **dirs = NULL;
r = strv_extend(&dirs, directory);
if (r < 0)
return log_oom();
if (arg_volatile_mode != VOLATILE_YES) {
r = strv_extend(&dirs, directory);
if (r < 0)
return log_oom();
}
if (dissected_image && dissected_image->partitions[PARTITION_USR].found) {
if ((dissected_image && dissected_image->partitions[PARTITION_USR].found) ||
arg_volatile_mode == VOLATILE_YES) {
char *s = path_join(directory, "/usr");
if (!s)
return log_oom();