spiegel_podman/libpod
Matt Heon 3560ccd5df Detect unhandled reboots and require user intervention
Podman needs to be able to detect when a system reboot occurs to
do certain types of cleanup operation (for example, reset
container states, clean up IPAM allocations, etc). our current
method for this is a sentinel file on a tmpfs filesystem. The
problem emerges that there is no directory that is guaranteed to
be a tmpfs and is also guaranteed to be accessible to rootless
users in the FHS. If the user has a systemd user session, we can
depend on /run/user/$UID, but we can't reliably say that they do.

This code will detect the no-tmpfs-but-reboot-occurred case by
writing the current system boot ID to our tmpfs sentinel file
when it is created, and checking that file every time Podman
starts to make sure that the current boot ID matches the cached
one in the sentinel file. If they don't match, a reboot occurred
and the sentinel file was not on a tmpfs and thus survived. In
that case, throw an error telling the user to remove certain
directories (the ones that are supposed to be tmpfs), so we can
proceed as expected.

Signed-off-by: Matt Heon <mheon@redhat.com>
2024-04-05 10:07:42 -04:00
..
define Merge pull request #22177 from mheon/fix_22172 2024-03-26 17:15:53 +00:00
driver Bump Go module to v5 2024-02-08 09:35:39 -05:00
events properly implement pull-error event status 2024-03-05 10:50:42 +01:00
layers Initial checkin from CRI-O repo 2017-11-01 11:24:59 -04:00
linkmode chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
lock Bump Go module to v5 2024-02-08 09:35:39 -05:00
logs Bump Go module to v5 2024-02-08 09:35:39 -05:00
plugin Bump Go module to v5 2024-02-08 09:35:39 -05:00
shutdown play kube: Add --wait option 2023-02-28 13:45:36 -05:00
boltdb_state.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
boltdb_state_internal.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
common_test.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
container.go use new c/common pasta2 setup logic to fix dns 2024-03-19 12:09:31 +01:00
container_api.go logging: new mode -l passthrough-tty 2024-02-28 17:23:59 +01:00
container_commit.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
container_config.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
container_copy_common.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
container_copy_freebsd.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
container_copy_linux.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
container_exec.go Use persist dir for oom file 2024-02-12 09:13:39 -05:00
container_freebsd.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
container_graph.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
container_graph_test.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
container_inspect.go Add support for annotations 2024-03-22 19:38:22 +00:00
container_inspect_freebsd.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
container_inspect_linux.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
container_internal.go libpod: restart always reconfigure the netns 2024-03-19 12:21:18 +01:00
container_internal_common.go container: do not chown to dest target with U 2024-04-03 14:41:33 +02:00
container_internal_freebsd.go use new c/common pasta2 setup logic to fix dns 2024-03-19 12:09:31 +01:00
container_internal_linux.go libpod: restart always reconfigure the netns 2024-03-19 12:21:18 +01:00
container_internal_linux_test.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
container_internal_test.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
container_linux.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
container_log.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
container_log_linux.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
container_log_unsupported.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
container_path_resolution.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
container_path_resolution_test.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
container_stat_common.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
container_stat_freebsd.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
container_stat_linux.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
container_top_freebsd.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
container_top_linux.c chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
container_top_linux.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
container_top_unsupported.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
container_validate.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
diff.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
doc.go document that using libpod package directly is not supported 2022-03-23 19:05:29 +01:00
events.go libpod/events: remove duplicated Details ID field 2024-02-22 13:37:27 +01:00
healthcheck.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
healthcheck_linux.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
healthcheck_nosystemd_linux.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
healthcheck_unsupported.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
info.go Add rootless network command to podman info 2024-03-26 09:56:48 -04:00
info_freebsd.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
info_linux.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
info_test.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
kube.go Removing CRI-O related annotations 2024-03-12 14:56:06 +01:00
mounts_linux.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
networking_common.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
networking_freebsd.go use new c/common pasta2 setup logic to fix dns 2024-03-19 12:09:31 +01:00
networking_linux.go use new c/common pasta2 setup logic to fix dns 2024-03-19 12:09:31 +01:00
networking_linux_test.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
networking_machine.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
networking_pasta_linux.go use new c/common pasta2 setup logic to fix dns 2024-03-19 12:09:31 +01:00
networking_slirp4netns.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
oci.go Use persist dir for oom file 2024-02-12 09:13:39 -05:00
oci_conmon.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
oci_conmon_attach_common.go logging: new mode -l passthrough-tty 2024-02-28 17:23:59 +01:00
oci_conmon_attach_freebsd.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
oci_conmon_attach_linux.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
oci_conmon_common.go Properly parse stderr when updating container status 2024-03-25 10:15:23 -04:00
oci_conmon_exec_common.go Use persist dir for oom file 2024-02-12 09:13:39 -05:00
oci_conmon_exec_freebsd.go Cease using deprecated runc userlookup 2024-02-02 11:02:43 -05:00
oci_conmon_exec_linux.go Cease using deprecated runc userlookup 2024-02-02 11:02:43 -05:00
oci_conmon_freebsd.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
oci_conmon_linux.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
oci_missing.go Use persist dir for oom file 2024-02-12 09:13:39 -05:00
oci_util.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
options.go logging: new mode -l passthrough-tty 2024-02-28 17:23:59 +01:00
pod.go Add volumes-from support using annotation in kube yaml 2024-02-14 07:31:43 -08:00
pod_api.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
pod_internal.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
pod_internal_freebsd.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
pod_internal_linux.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
pod_status.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
pod_top_freebsd.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
pod_top_linux.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
reset.go Use stop timeout of zero for system reset 2024-03-01 10:51:58 -06: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 Detect unhandled reboots and require user intervention 2024-04-05 10:07:42 -04:00
runtime_cstorage.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
runtime_ctr.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
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 Detect unhandled reboots and require user intervention 2024-04-05 10:07:42 -04:00
runtime_img.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
runtime_linux.go Detect unhandled reboots and require user intervention 2024-04-05 10:07:42 -04:00
runtime_migrate_linux.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
runtime_migrate_unsupported.go Remove Libpod special-init conditions 2024-01-12 09:19:34 -05:00
runtime_pod.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
runtime_pod_common.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
runtime_pod_freebsd.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
runtime_pod_linux.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
runtime_pre_go1.20.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
runtime_renumber.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
runtime_test.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
runtime_volume.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
runtime_volume_common.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
runtime_worker.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
service.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
sqlite_state.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
sqlite_state_internal.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
state.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
state_test.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
stats_common.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
stats_freebsd.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
stats_linux.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
storage.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
util.go fix invalid HTTP header values when hijacking a connection 2024-03-12 23:05:25 +01:00
util_freebsd.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
util_linux.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
util_linux_test.go chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
volume.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
volume_inspect.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
volume_internal.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
volume_internal_common.go Bump Go module to v5 2024-02-08 09:35:39 -05:00
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