mirror of
https://github.com/containers/podman.git
synced 2026-08-02 02:18:20 -04:00
@@ -1,5 +1,19 @@
|
||||
# Release Notes
|
||||
|
||||
## 5.4.2
|
||||
### Bugfixes
|
||||
- Fixed a bug where the `podman import` command could not import images compressed with algorithms other than gzip ([#25593](https://github.com/containers/podman/issues/25593)).
|
||||
- Fixed a bug where the `podman cp` command could deadlock when copying into a non-empty volume on a container that is not running ([#25585](https://github.com/containers/podman/issues/25585)).
|
||||
|
||||
### API
|
||||
- Fixed a bug where the default values for some fields in the Libpod Create endpoint for Containers did not have sensible defaults for some healthcheck fields, causing unrestricted log growth for containers which did not set these fields ([#25473](https://github.com/containers/podman/issues/25473)).
|
||||
|
||||
### Misc
|
||||
- Updated vendored Buildah to v1.39.4
|
||||
- Updated the containers/common library to v0.62.3
|
||||
- Updated the containers/image library to v5.34.3
|
||||
- Updated the containers/storage library to v1.57.2
|
||||
|
||||
## 5.4.1
|
||||
### Bugfixes
|
||||
- Fixed a bug where volume quotas were not being applied ([#25368](https://github.com/containers/podman/issues/25368)).
|
||||
|
||||
@@ -160,10 +160,10 @@ func (c *Container) copyFromArchive(path string, chown, noOverwriteDirNonDir boo
|
||||
// populated the volume and that will block a future
|
||||
// copy-up.
|
||||
volume.lock.Lock()
|
||||
defer volume.lock.Unlock()
|
||||
|
||||
if err := volume.update(); err != nil {
|
||||
logrus.Errorf("Unable to update volume %s status: %v", volume.Name(), err)
|
||||
volume.lock.Unlock()
|
||||
return
|
||||
}
|
||||
|
||||
@@ -172,15 +172,12 @@ func (c *Container) copyFromArchive(path string, chown, noOverwriteDirNonDir boo
|
||||
volume.state.CopiedUp = true
|
||||
if err := volume.save(); err != nil {
|
||||
logrus.Errorf("Unable to save volume %s state: %v", volume.Name(), err)
|
||||
volume.lock.Unlock()
|
||||
return
|
||||
}
|
||||
|
||||
volume.lock.Unlock()
|
||||
|
||||
for _, namedVol := range c.config.NamedVolumes {
|
||||
if namedVol.Name == volume.Name() {
|
||||
if err := c.fixVolumePermissions(namedVol); err != nil {
|
||||
if err := c.fixVolumePermissionsUnlocked(namedVol, volume); err != nil {
|
||||
logrus.Errorf("Unable to fix volume %s permissions: %v", volume.Name(), err)
|
||||
}
|
||||
return
|
||||
|
||||
@@ -2916,6 +2916,10 @@ func (c *Container) fixVolumePermissions(v *ContainerNamedVolume) error {
|
||||
vol.lock.Lock()
|
||||
defer vol.lock.Unlock()
|
||||
|
||||
return c.fixVolumePermissionsUnlocked(v, vol)
|
||||
}
|
||||
|
||||
func (c *Container) fixVolumePermissionsUnlocked(v *ContainerNamedVolume, vol *Volume) error {
|
||||
// The volume may need a copy-up. Check the state.
|
||||
if err := vol.update(); err != nil {
|
||||
return err
|
||||
|
||||
@@ -280,22 +280,18 @@ RUN chown 9999:9999 %s`, ALPINE, ctrVolPath, ctrVolPath)
|
||||
defer srcFile.Close()
|
||||
defer os.Remove(srcFile.Name())
|
||||
|
||||
volCreate := podmanTest.Podman([]string{"volume", "create", volName})
|
||||
volCreate.WaitWithDefaultTimeout()
|
||||
Expect(volCreate).Should(ExitCleanly())
|
||||
_ = podmanTest.PodmanExitCleanly("volume", "create", volName)
|
||||
_ = podmanTest.PodmanExitCleanly("create", "--name", ctrName, "-v", fmt.Sprintf("%s:%s", volName, ctrVolPath), imgName, "sh")
|
||||
|
||||
ctrCreate := podmanTest.Podman([]string{"create", "--name", ctrName, "-v", fmt.Sprintf("%s:%s", volName, ctrVolPath), imgName, "sh"})
|
||||
ctrCreate.WaitWithDefaultTimeout()
|
||||
Expect(ctrCreate).To(ExitCleanly())
|
||||
_ = podmanTest.PodmanExitCleanly("cp", srcFile.Name(), fmt.Sprintf("%s:%s", ctrName, ctrVolPath))
|
||||
|
||||
cp := podmanTest.Podman([]string{"cp", srcFile.Name(), fmt.Sprintf("%s:%s", ctrName, ctrVolPath)})
|
||||
cp.WaitWithDefaultTimeout()
|
||||
Expect(cp).To(ExitCleanly())
|
||||
|
||||
ls := podmanTest.Podman([]string{"run", "-v", fmt.Sprintf("%s:%s", volName, ctrVolPath), ALPINE, "ls", "-al", ctrVolPath})
|
||||
ls.WaitWithDefaultTimeout()
|
||||
Expect(ls).To(ExitCleanly())
|
||||
ls := podmanTest.PodmanExitCleanly("run", "-v", fmt.Sprintf("%s:%s", volName, ctrVolPath), ALPINE, "ls", "-al", ctrVolPath)
|
||||
Expect(ls.OutputToString()).To(ContainSubstring("9999 9999"))
|
||||
Expect(ls.OutputToString()).To(ContainSubstring(filepath.Base(srcFile.Name())))
|
||||
|
||||
// Test for #25585
|
||||
_ = podmanTest.PodmanExitCleanly("rm", ctrName)
|
||||
_ = podmanTest.PodmanExitCleanly("create", "--name", ctrName, "-v", fmt.Sprintf("%s:%s", volName, ctrVolPath), imgName, "sh")
|
||||
_ = podmanTest.PodmanExitCleanly("cp", srcFile.Name(), fmt.Sprintf("%s:%sfile2", ctrName, ctrVolPath))
|
||||
})
|
||||
})
|
||||
|
||||
@@ -7,4 +7,4 @@ package rawversion
|
||||
//
|
||||
// NOTE: remember to bump the version at the top of the top-level README.md
|
||||
// file when this is bumped.
|
||||
const RawVersion = "5.4.2-dev"
|
||||
const RawVersion = "5.4.3-dev"
|
||||
|
||||
Reference in New Issue
Block a user