Commit Graph

6345 Commits

Author SHA1 Message Date
Paul Holzinger
4620e91f86 podman container cleanup: ignore common errors
The podman container cleanup command is not really intended for human
use. Instead each conmon will spawn this command after the container
exit to make sure we can cleanup resources asynchronously. However this
command will always race against other foreground process such as podman
rm -fa. Therefore it is possible that the ctr was already removed and we
should not log errors in this case.

While these errors are normally not seen as the command is int he
background you can see it if you enable syslog logging and then they
just spam the log with useless errors so just ignore them.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-08-07 17:00:47 +02:00
Brent Baude
81003f2d08 Ignore ERROR_SHARING_VIOLATION error on windows
When removing the gvproxy pid file, under CI conditions we could hit a
case where the PID file being removed seemed to have an open handle on
it still.  I could not find anything in podman that left an open handle
and gvproxy would have quit before this, so we think it is likely
another process holding it.  I could not find root cause with CI because
I could not trip the flake.

this new code allows windows (specifically hyperv bc WSL does not use
GVProxy) to ignore an ERROR_SHARING_VIOLATION.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-08-06 14:09:36 -05:00
openshift-merge-bot[bot]
128fde1734 Merge pull request #23518 from Luap99/test-new-vms
Update CI images
2024-08-06 13:44:58 +00:00
Paul Holzinger
029f9b38cc CI: fix broken libkrun test
Same issues as in the volume ops test, the libkrun volume is not working
properly (#23296).

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-08-06 14:45:52 +02:00
openshift-merge-bot[bot]
3275fd2dda Merge pull request #23512 from rhatdan/mount
Remove another race condition when mounting containers or images
2024-08-06 11:41:10 +00:00
Daniel J Walsh
abd586cb1c Remove another race condition when mounting containers or images
Fixes: https://github.com/containers/podman/issues/23507

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-08-06 06:23:13 -04:00
openshift-merge-bot[bot]
b1d111c770 Merge pull request #23391 from l0rd/build-contexts
Convert additional build context paths on Windows
2024-08-06 10:18:41 +00:00
Daniel J Walsh
d628e14355 Ignore missing containers when calling GetExternalContainerLists
Race condition between listing containers and figuring out if it
is a buildah container.

Fixe: https://github.com/containers/podman/issues/23492

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-08-05 08:18:57 -04:00
Chris Evich
457c64564a Temp. disable PM basic Volume ops test
Issue 23296

Signed-off-by: Chris Evich <cevich@redhat.com>
2024-08-01 15:01:46 -04:00
tomsweeneyredhat
2550a7290a Tweak versions in register_images.go
Fix up a couple of versions in comments in the
pkg/api/server/register_images.go file.  Based on comments
from #23440

Signed-off-by: tomsweeneyredhat <tsweeney@redhat.com>
2024-07-31 11:13:57 -04:00
tomsweeneyredhat
b8a9b184af Add --compat-volumes option to build and farm build
Add the `--compat-volumes option from Buildah v1.37 into
Podman in preparation of Podman v5.2

Signed-off-by: tomsweeneyredhat <tsweeney@redhat.com>
2024-07-30 18:26:13 -04:00
openshift-merge-bot[bot]
95c78b2716 Merge pull request #23444 from rhatdan/quadlet
Use new syntax for selinux options in quadlet
2024-07-30 13:16:28 +00:00
openshift-merge-bot[bot]
b4d0c95f4e Merge pull request #23427 from ygalblum/quadlet-pod-service-name
Allow setting the service name of Quadlet .pod units
2024-07-30 12:54:29 +00:00
Daniel J Walsh
1c46686a41 Use new syntax for selinux options in quadlet
Fixes: https://github.com/containers/podman/issues/23432

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-07-30 06:15:45 -04:00
Mario Loriedo
bf3f207a49 Convert additional build context paths on Windows
Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2024-07-29 17:43:36 +02:00
Paul Holzinger
1b91df012d pkg/api: do not leak config pointers into specgen
The value of the pointer might be changed while creating the container
causing unexpected side effects.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-07-29 15:12:55 +02:00
Ygal Blum
f3a86266e6 Quadlet - Allow the user to set the service name for .pod files
Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
2024-07-29 16:11:19 +03:00
openshift-merge-bot[bot]
34d93d6502 Merge pull request #23321 from rhatdan/build
More information for podman --remote build and running out of space.
2024-07-24 20:48:52 +00:00
openshift-merge-bot[bot]
7ee2cfa03c Merge pull request #23366 from rhatdan/quadlet
Add /run/containers/systemd, ${XDG_RUNTIME_DIR}/containers/systemd quadlet dirs
2024-07-24 20:26:49 +00:00
Daniel J Walsh
ce7dded38b Add /run/containers/systemd, ${XDG_RUNTIME_DIR}/containers/systemd quadlet dirs
Fixes: https://github.com/containers/podman/issues/23363

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-07-24 09:28:00 -04:00
Giuseppe Scrivano
f70976a7e2 api: honor the userns for the infra container
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2024-07-24 13:36:13 +02:00
Giuseppe Scrivano
fa2590a97a play: handle 'private' as 'auto'
currently there is no way to specify the mappings, so at least treat a
private user namespace as "auto".

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2024-07-24 12:10:48 +02:00
Giuseppe Scrivano
bf8c3065f2 infra: user ns annotation higher precedence
The pod spec HostUsers boolean only specifies whether a user namespace
is used or not.  Hene, the podman specific annotation must have a
higher precedence since it defines how the user namespace is created.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2024-07-24 12:10:48 +02:00
Giuseppe Scrivano
bbe0e4a5db specgenutil: record the pod userns in the annotations
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2024-07-24 12:10:48 +02:00
openshift-merge-bot[bot]
2015137eee Merge pull request #23367 from rhatdan/codespell
Run codespell on source
2024-07-23 23:11:32 +00:00
Arthur Sengileyev
71d6e2fbaf Add utility to convert VMFile to URL for UNIX sockets
This adds generic utility to convert file system path into URL structure.
Instead of string manipulation it uses URL parsing and building routines.
Appending absolute path to `unix:///` URL out of the box correctly
handles URL format on Windows platform, where filepath should be prepended
by additional `/` before drive letter.

Signed-off-by: Arthur Sengileyev <arthur.sengileyev@gmail.com>
2024-07-23 16:41:24 +03:00
Daniel J Walsh
7768cf235e Run codespell on source
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-07-23 07:28:23 -04:00
openshift-merge-bot[bot]
34e8c1e762 Merge pull request #23354 from rhatdan/quadlet
Add support for StopSignal in quadlet .container files
2024-07-22 15:20:11 +00:00
Daniel J Walsh
174190132c More information for podman --remote build and running out of space.
Users do not realize that the entire context directory is being copied
into the podman machine when doing a podman --remote build.

Adding information about the context directory might help them
understand this.

Improves: https://github.com/containers/podman/issues/23287

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-07-22 08:13:09 -04:00
Daniel J Walsh
0ecd6fa59f Add support for StopSignal in quadlet .container files
Fixes: https://github.com/containers/podman/issues/23050

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-07-22 06:43:45 -04:00
Paul Holzinger
55b6e4c3e8 podman pod stats: fix race when ctr process exits
Like commit 55749af0c7 but for podman *pod* stats not the normal podman
stats. We must ignore ErrCtrStopped here as well as this will happen
when the container process exited.

While at it remove a useless argument from the function as it was always
nil and restructure the logic flow to make it easier to read.

Fixes #23334

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-07-22 10:30:42 +02:00
openshift-merge-bot[bot]
003527fedc Merge pull request #23254 from arixmkii/disable-mounts
Implement disable default mounts via command line
2024-07-21 10:49:17 +00:00
Paul Holzinger
55749af0c7 podman stats: fix race when ctr process exists
stats read from the cgroup, and in order to know the cgroup we check the
pid for the cgroup. However there is a window where the pid exited and
podman did not yet updated its internal state. In this case the code
returns ErrCtrStopped so we should ignore this error as well.

Fixes #23334

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-07-19 13:21:34 +02:00
openshift-merge-bot[bot]
8a53e8eb67 Merge pull request #23323 from Luap99/machine-decompress-empty
pkg/machine/compression: skip decompress bar for empty file
2024-07-18 17:51:11 +00:00
openshift-merge-bot[bot]
164ecb2b5e Merge pull request #23325 from Luap99/ps-pod-err
podman ps: fix racy pod name query
2024-07-18 17:48:26 +00:00
openshift-merge-bot[bot]
9f873256b6 Merge pull request #23316 from umohnani8/farm-fix
Fix name for builder in farm connection
2024-07-18 17:26:24 +00:00
Paul Holzinger
182224defb podman pod stats: fix pod rm race
If a pod is removed when calling podman pod stats there is a race where
the command might fail with no such pod. This is not a user error, like
the ps/ls command skip it and move to the next one.

Fixes #23327

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-07-18 17:48:21 +02:00
Paul Holzinger
e1caf80e81 podman ps: fix racy pod name query
The pod name was queried without holding the container lock, thus it was
possible that the pod was deleted in the meantime and podman just failed
with "no such pod" as the errors.Is() check matched the wrong error.

Move it into the locked code this should prevent anyone from removing
the pod while the container is part of it. Also fix the returned error,
there is no reason to special case one specific error just wrap any error
here so callers at least know where it happened. However this is not
good enough because the batch doesn't update the state which means it
see everything before the container was locked. In this case it might be
possible the ctr and pod was already removed so let the caller skip both
ctr and pod removed errors.

Fixes #23282

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-07-18 17:34:26 +02:00
openshift-merge-bot[bot]
22cf2b42d4 Merge pull request #23305 from Luap99/auto-update-race
podman auto-update/system df: fix ErrNoSuchCtr/Volume race
2024-07-18 11:31:46 +00:00
Paul Holzinger
f630eebcfa pkg/machine/compression: skip decompress bar for empty file
When the file is empty it is possible our code panics as bar.ProxyReader
returns nil when the bar is finished which is the case for 0 size as it
doesn't have to read anything from there. However as this happens on
different goroutines it is race and most of the time still works.

To fix this simply skip the progress bar setup for empty files.

While at it fix the deprecated argument in the tests.

Fixes #23281

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-07-18 13:23:00 +02:00
Paul Holzinger
46f4044893 podman system df: fix fix ErrNoSuchCtr/Volume race
When a container or volume is removed during the loop this is not a
problem and we should just skip it as it is not a user bug and just a
normal race.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-07-18 10:52:25 +02:00
Paul Holzinger
1413a28409 podman auto-update: fix ErrNoSuchCtr race
If a container is removed during the loop we should just ignore it. No
reason to log this as error to the user.

Fixes #23279

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-07-18 10:52:12 +02:00
Urvashi Mohnani
02c094425f Fix name for builder in farm connection
Ensure that the map of builders we create links the
builder name and not the farm name to the image engine
of that node. This was a regression introduced during the
farm conf rework.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2024-07-17 22:31:48 -04:00
benniekiss
3c52ef43f5 Expand drop-in search paths
* top-level (pod.d)
* truncated (unit-.container.d)

Signed-off-by: Bennie Milburn-Town <63211101+benniekiss@users.noreply.github.com>
2024-07-17 17:43:02 -04:00
Daniel J Walsh
1ec3edd3f6 Do not crash on invalid filters
Vendor in latest containers/common
Fixes #23120

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-07-17 10:44:55 -04:00
openshift-merge-bot[bot]
e225cae781 Merge pull request #23145 from afbjorklund/remove-machine-volume-driver
Remove the unused machine volume-driver
2024-07-15 20:36:19 +00:00
Arthur Sengileyev
d26f0ca90f Implement disable default mounts via command line
Signed-off-by: Arthur Sengileyev <arthur.sengileyev@gmail.com>
2024-07-15 15:27:19 +03:00
openshift-merge-bot[bot]
2f673aa8f7 Merge pull request #23258 from Luap99/start-error
fix race conditions in start/attach logic
2024-07-15 12:11:56 +00:00
Félix Saparelli
54fce37968 Add NetworkAlias= support to quadlet
Adds a `NetworkAlias=` key to both .container and .pod quadlet files,
which translates to the `--network-alias` option to `podman run` and
`podman pod create` respectively. Can be repeated multiple times.

Signed-off-by: Félix Saparelli <felix@passcod.name>
2024-07-15 16:39:25 +12:00
Paul Holzinger
3280da0500 fix race conditions in start/attach logic
The current code did something like this:
lock()
getState()
unlock()

if state != running
  lock()
  getState() == running -> error
  unlock()

This of course is wrong because between the first unlock() and second
lock() call another process could have modified the state. This meant
that sometimes you would get a weird error on start because the internal
setup errored as the container was already running.

In general any state check without holding the lock is incorrect and
will result in race conditions. As such refactor the code to combine
both StartAndAttach and Attach() into one function that can handle both.
With that we can move the running check into the locked code.

Also use typed error for this specific error case then the callers can
check and ignore the specific error when needed. This also allows us to
fix races in the compat API that did a similar racy state check.

This commit changes slightly how we output the result, previously a
start on already running container would never print the id/name of the
container which is confusing and sort of breaks idempotence. Now it will
include the output except when --all is used. Then it only reports the
ids that were actually started.

Fixes #23246

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-07-12 15:11:34 +02:00