spiegel_podman/pkg
Paul Holzinger fdb736d282
apple virtiofs: fix racy mount setup
One problem on FCOS is that the root directory is immutable, as such in
order to mount arbitrary paths from the host we must make it mutable
again and create these dir on boot in order to be able to mount there.

The current logic was racy as it used one unit for each path and they
all did chattr -i /; mkdir -p $path; chattr -i / and systemd can run
these units in parallel. That means it was possible for another unit to
make / immutable before the unit could do the mkdir. I pointed this out
on the original PR[1] but we never followed up on it...

Now this here changes several things. First have one unit that does the
chattr -i / (immutable-root-off.service), it is hooked into
remote-fs-pre.target which means it is executed before the network
mounts (virtiofs) are done.

Then we have another unit that does chattr +i /
(immutable-root-on.service) which turn the immutable root back on after
remote-fs.target which means all mount are done at this point.

Additionally the automount unit is removed because it does not add any
value for us and it was borken anyway as it used the virtiofs tag as
path so systemd just ignored it.

[1] https://github.com/containers/podman/pull/20612#discussion_r1384846241

Fixes #22569

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-06-27 14:24:07 +02:00
..
annotations Removing CRI-O related annotations 2024-03-12 14:56:06 +01:00
api build API: accept platform comma separated 2024-06-25 18:48:59 +02:00
auth Replace strings.SplitN with strings.Cut 2024-01-11 13:50:15 +00:00
autoupdate Bump Go module to v5 2024-02-08 09:35:39 -05:00
bindings Merge pull request #22733 from nalind/system-check 2024-06-13 10:35:56 +00:00
channel bump golangci-lint to v1.50.1 2022-12-15 13:39:56 +01:00
checkpoint restore: fix container restore into pod 2024-06-20 13:24:53 +01:00
copy Bump Go module to v5 2024-02-08 09:35:39 -05:00
criu chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
ctime chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
domain remote: fix incorrect CONTAINER_CONNECTION parsing 2024-06-21 14:01:22 +02:00
emulation chore: delete obsolete // +build lines 2024-01-04 11:53:38 +02:00
env pkg/env.Join(): don't modify passed-in maps 2024-02-29 11:47:44 -05:00
errorhandling Fix typos 2023-02-11 18:23:24 +01:00
farm chore: fix function names in comment 2024-04-24 12:07:38 +08:00
fileserver Bump Go module to v5 2024-02-08 09:35:39 -05:00
inspect Bump Go module to v5 2024-02-08 09:35:39 -05:00
k8s.io Bump Go module to v5 2024-02-08 09:35:39 -05:00
lookup Cease using deprecated runc userlookup 2024-02-02 11:02:43 -05:00
machine apple virtiofs: fix racy mount setup 2024-06-27 14:24:07 +02:00
namespaces Replace strings.SplitN with strings.Cut 2024-01-11 13:50:15 +00:00
parallel Bump Go module to v5 2024-02-08 09:35:39 -05:00
ps podman ps: show exposed ports under PORTS as well 2024-04-10 14:24:23 +02:00
rctl Replace strings.SplitN with strings.Cut 2024-01-11 13:50:15 +00:00
rootless pkg/rootless: set _CONTAINERS_USERNS_CONFIGURED correctly 2024-06-04 17:58:39 +02:00
seccomp pkg: switch to golang native error wrapping 2022-07-08 08:54:47 +02:00
selinux Fix SELinux functions names to not be repetitive 2020-04-23 15:57:34 -04:00
signal refacto: unknown signal return signal number without prefix 2024-02-28 19:45:03 +01:00
specgen Add the ability to automount images as volumes via play 2024-04-25 14:12:27 -04:00
specgenutil podman run use pod userns even with --pod-id-file 2024-06-24 17:18:08 +02:00
specgenutilexternal Quadlet container mount - support non key=val options 2023-09-27 16:20:00 +03:00
systemd Quadlet - use specifier for unescaped values for templated container name 2024-06-19 14:44:21 +03:00
terminal Fix Lint on Windows and enable the job 2024-02-20 08:06:18 -05:00
timetype Replace strings.SplitN with strings.Cut 2024-01-11 13:50:15 +00:00
trust pkg/trust: use fileutils.(Le|E)xists 2024-04-19 09:52:14 +02:00
util update golangci-lint to v1.59.0 2024-05-27 11:19:03 +02:00