spiegel_podman/libpod
Giuseppe Scrivano c56c2fc5f8
libpod: do not block idmap with overlay (O) volumes
Allow the `idmap` volume option to be combined with the overlay `O`
option, e.g. `-v /src:/mnt:O,idmap` or `-v myvol:/mnt:O,idmap`.
Previously any option other than `U`, `upperdir` and `workdir` combined
with `O` was rejected.

The parser in GenVolumeMounts now accepts `idmap` alongside `O` and
rejects the first disallowed option instead of counting flags.  The
mappings from the container's user namespace are threaded onto the
generated overlay mount so the runtime idmaps it.  This is done for both
the anonymous/host-path overlay volumes and the named-volume overlay
path, which are handled by separate code.

When a volume is idmapped the runtime shifts the mount so that on-disk
IDs map identically into the container, so the overlay backing dirs
(contentDir, upperdir, workdir) must be owned by real root (0) rather
than the host IDs the container root maps to; otherwise they surface as
the overflow ID inside the container and are inaccessible.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2026-09-01 09:50:51 +02:00
..
define swagger: fix deprecated alias annotations and model name collisions 2026-08-10 22:14:47 +05:30
driver RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
events Merge pull request #29499 from KHARSHAVARDHAN-eng/fix-29491-event-logger-goroutine-leak 2026-08-17 15:39:11 -04:00
layers Switch common, storage and image to monorepo. 2025-09-01 12:33:04 +02:00
linkmode chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
lock test: synchronize SHM lock test 2026-08-18 16:57:53 +05:30
logs RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
namesgenerator libpod: include names-generator.go 2026-03-09 16:08:43 +01:00
plugin Replace os.Is* error checks with errors.Is 2026-05-21 13:09:42 -07:00
shutdown enable gofumpt formatter 2025-11-11 12:32:46 +01:00
boltdb_state.go Re-add a minimal version of BoltDB for migrations 2026-05-05 15:42:04 -04:00
boltdb_state_internal.go Add reasons to all staticcheck suppressions 2026-06-12 10:12:40 +02:00
common_test.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
container.go libpod: remove LegacyExecSessions 2026-06-23 18:47:08 +02:00
container_api.go libpod: cleanup after failed container init 2026-07-23 22:42:14 +09:00
container_commit.go cmd, commit: register shutdown handler to unpause container 2026-06-03 07:28:22 +02:00
container_config.go Add reasons to all staticcheck suppressions 2026-06-12 10:12:40 +02:00
container_copy_common.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
container_copy_freebsd.go Mount volumes before copying into a container 2024-11-27 08:09:50 -05:00
container_copy_linux.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
container_exec.go added errorlint 2026-08-14 01:35:03 +05:30
container_freebsd.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
container_graph.go Add migration code for BoltDB to SQLite 2026-05-08 14:07:17 -04:00
container_graph_test.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
container_healthcheck_test.go Make most of libpod, and everything that relies on it, non-darwin 2026-02-27 22:18:36 +01:00
container_inspect.go Fix duplicated command in inspect Args when container has single-element command 2026-07-09 17:31:21 +02:00
container_inspect_freebsd.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
container_inspect_linux.go return usernsmode=private for created containers with userns=auto 2026-08-10 14:30:43 +02:00
container_internal.go libpod(refactor): optimize directory empty check 2026-08-26 16:40:12 +09:00
container_internal_common.go libpod: do not block idmap with overlay (O) volumes 2026-09-01 09:50:51 +02:00
container_internal_freebsd.go Replace os.Is* error checks with errors.Is 2026-05-21 13:09:42 -07:00
container_internal_linux.go added errorlint 2026-08-14 01:35:03 +05:30
container_internal_linux_test.go libpod: limit splitting of cgroup fields 2026-04-30 09:52:08 -07:00
container_internal_test.go Make most of libpod, and everything that relies on it, non-darwin 2026-02-27 22:18:53 +01:00
container_linux.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
container_log.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
container_log_linux.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
container_log_unsupported.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
container_path_resolution.go chore: fix some function names in comment 2026-06-07 11:29:49 +08:00
container_path_resolution_test.go Make most of libpod, and everything that relies on it, non-darwin 2026-02-27 22:18:36 +01:00
container_secrets_test.go run modernize -fix ./... 2026-03-12 17:22:01 +01:00
container_stat_common.go Replace os.Is* error checks with errors.Is 2026-05-21 13:09:42 -07:00
container_stat_freebsd.go RUN-4538: Fix buildah vendoring 2026-04-21 14:27:58 -05:00
container_stat_linux.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
container_top_freebsd.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
container_top_linux.c libpod/container_top_linux.c: fix missing header 2024-06-27 10:50:17 +02:00
container_top_linux.go added errorlint 2026-08-14 01:35:03 +05:30
container_top_unsupported.go Make most of libpod, and everything that relies on it, non-darwin 2026-02-27 22:18:53 +01:00
container_validate.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
diff.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
doc.go document that using libpod package directly is not supported 2022-03-23 19:05:29 +01:00
events.go libpod: use %w instead of %v in fmt.Errorf calls 2026-07-28 18:42:22 +05:00
healthcheck.go libpod: use %w instead of %v in fmt.Errorf calls 2026-07-28 18:42:22 +05:00
healthcheck_config.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
healthcheck_linux.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
healthcheck_nosystemd_linux.go lint: reenable revive unused-parameter check 2025-10-01 10:42:08 -04:00
healthcheck_unsupported.go Make most of libpod, and everything that relies on it, non-darwin 2026-02-27 22:18:53 +01:00
info.go feat(info): add memAvailable to host info 2026-07-22 08:41:59 +02:00
info_freebsd.go libpod: some modernize fixes for freebsd and darwin 2026-05-22 14:15:49 -07:00
info_linux.go fix some missing scanner error checks 2026-06-30 10:32:32 +02:00
info_test.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
kube.go Merge pull request #28664 from givensuman/fix/generate-kube-healthcheck 2026-06-25 17:32:57 +02:00
mounts_linux.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
networking_common.go libpod: implement force_port_listen containers.conf option 2026-08-12 11:21:39 +02:00
networking_freebsd.go added errorlint 2026-08-14 01:35:03 +05:30
networking_linux.go libpod: unset network state in reloadContainerNetwork 2026-07-28 18:52:27 +02:00
networking_linux_test.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
networking_machine.go fix: clearer error for a privileged port on a specific IP (macOS) 2026-06-19 13:25:09 +02:00
networking_machine_test.go fix: clearer error for a privileged port on a specific IP (macOS) 2026-06-19 13:25:09 +02:00
networking_pasta_linux.go Switch common, storage and image to monorepo. 2025-09-01 12:33:04 +02:00
networking_rootlessport.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
oci.go exec: honor ConsoleSize so the terminal is sized at creation 2026-06-22 10:36:10 +08:00
oci_conmon.go Make most of libpod, and everything that relies on it, non-darwin 2026-02-27 22:18:36 +01:00
oci_conmon_attach_common.go added errorlint 2026-08-14 01:35:03 +05:30
oci_conmon_attach_freebsd.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
oci_conmon_attach_linux.go add missing O_CLOEXEC to open calls 2026-04-02 15:06:37 +02:00
oci_conmon_common.go added errorlint 2026-08-14 01:35:03 +05:30
oci_conmon_exec_common.go added errorlint 2026-08-14 01:35:03 +05:30
oci_conmon_exec_freebsd.go lint: reenable revive unused-parameter check 2025-10-01 10:42:08 -04:00
oci_conmon_exec_linux.go Switch common, storage and image to monorepo. 2025-09-01 12:33:04 +02:00
oci_conmon_freebsd.go lint: reenable revive unused-parameter check 2025-10-01 10:42:08 -04:00
oci_conmon_linux.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
oci_missing.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
oci_util.go Performance: Use delayed regex compilation 2026-08-14 21:14:17 +05:30
options.go Add migration code for BoltDB to SQLite 2026-05-08 14:07:17 -04:00
pod.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
pod_api.go Some improvements for libpod. 2026-06-02 19:02:38 +08:00
pod_internal.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
pod_internal_freebsd.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
pod_internal_linux.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
pod_status.go Some improvements for libpod. 2026-06-02 19:02:38 +08:00
pod_status_test.go Some improvements for libpod. 2026-06-02 19:02:38 +08:00
pod_top_freebsd.go libpod: some modernize fixes for freebsd and darwin 2026-05-22 14:15:49 -07:00
pod_top_linux.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
reset.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
rlimit_int64.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
rlimit_uint64.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
runtime.go libpod: do not fail prune when build container is already gone 2026-07-29 20:28:50 +05:30
runtime_cstorage.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
runtime_ctr.go added errorlint 2026-08-14 01:35:03 +05:30
runtime_ctr_freebsd.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
runtime_ctr_linux.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
runtime_freebsd.go lint: reenable revive unused-parameter check 2025-10-01 10:42:08 -04:00
runtime_img.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
runtime_linux.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
runtime_migrate.go Add migration code for BoltDB to SQLite 2026-05-08 14:07:17 -04:00
runtime_migrate_freebsd.go libpod: fix a confusing error message from 'podman system reset' on FreeBSD 2025-02-11 15:13:29 +00:00
runtime_migrate_linux.go Replace os.Is* error checks with errors.Is 2026-05-21 13:09:42 -07:00
runtime_pod.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
runtime_pod_common.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
runtime_pod_freebsd.go lint: reenable revive unused-parameter check 2025-10-01 10:42:08 -04:00
runtime_pod_linux.go added errorlint 2026-08-14 01:35:03 +05:30
runtime_pre_go1.20.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
runtime_renumber.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
runtime_test.go Make most of libpod, and everything that relies on it, non-darwin 2026-02-27 22:18:36 +01:00
runtime_volume.go libpod: add volume rename support 2026-06-11 21:56:15 +01:00
runtime_volume_common.go Performance: Replace strings.ToLower with strings.EqualFold 2026-08-15 02:17:47 +05:30
runtime_worker.go Make most of libpod, and everything that relies on it, non-darwin 2026-02-27 22:18:36 +01:00
service.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
sqlite_constraint_cgo.go libpod: add volume rename support 2026-06-11 21:56:15 +01:00
sqlite_constraint_nocgo.go libpod: add volume rename support 2026-06-11 21:56:15 +01:00
sqlite_state.go libpod: add volume rename support 2026-06-11 21:56:15 +01:00
sqlite_state_internal.go Add migration code for BoltDB to SQLite 2026-05-08 14:07:17 -04:00
state.go libpod: add volume rename support 2026-06-11 21:56:15 +01:00
state_test.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
stats_common.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
stats_freebsd.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
stats_linux.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
storage.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
util.go Replace os.Is* error checks with errors.Is 2026-05-21 13:09:42 -07:00
util_freebsd.go added errorlint 2026-08-14 01:35:03 +05:30
util_linux.go added errorlint 2026-08-14 01:35:03 +05:30
util_linux_test.go lint: reenable revive unused-parameter check 2025-10-01 10:42:08 -04:00
util_test.go Make most of libpod, and everything that relies on it, non-darwin 2026-02-27 22:18:36 +01:00
volume.go libpod(refactor): optimize directory empty check 2026-08-26 16:40:12 +09:00
volume_inspect.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00
volume_internal.go libpod(refactor): optimize directory empty check 2026-08-26 16:40:12 +09:00
volume_internal_common.go added errorlint 2026-08-14 01:35:03 +05:30
volume_internal_freebsd.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
volume_internal_linux.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
volume_test.go RUN-4539: Change podman module paths 2026-04-22 14:02:25 -05:00