mirror of
https://github.com/containers/podman.git
synced 2025-10-19 20:23:08 +08:00
fix handling of static/volume dir
The processing and setting of the static and volume directories was scattered across the code base (including c/common) leading to subtle errors that surfaced in #19938. There were multiple issues that I try to summarize below: - c/common loaded the graphroot from c/storage to set the defaults for static and volume dir. That ignored Podman's --root flag and surfaced in #19938 and other bugs. c/common does not set the defaults anymore which gives Podman the ability to detect when the user/admin configured a custom directory (not empty value). - When parsing the CLI, Podman (ab)uses containers.conf structures to set the defaults but also to override them in case the user specified a flag. The --root flag overrode the static dir which is wrong and broke a couple of use cases. Now there is a dedicated field for in the "PodmanConfig" which also includes a containers.conf struct. - The defaults for static and volume dir and now being set correctly and adhere to --root. - The CONTAINERS_CONF_OVERRIDE env variable has not been passed to the cleanup process. I believe that _all_ env variables should be passed to conmon to avoid such subtle bugs. Overall I find that the code and logic is scattered and hard to understand and follow. I refrained from larger refactorings as I really just want to get #19938 fixed and then go back to other priorities. https://github.com/containers/common/pull/1659 broke three pkg/machine tests. Those have been commented out until getting fixed. Fixes: #19938 Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
This commit is contained in:
18
vendor/github.com/containers/common/pkg/config/config.go
generated
vendored
18
vendor/github.com/containers/common/pkg/config/config.go
generated
vendored
@ -561,24 +561,6 @@ type SetOptions struct {
|
||||
// backwards compatibility with older versions of libpod for which we must
|
||||
// query the database configuration. Not included in the on-disk config.
|
||||
StorageConfigGraphDriverNameSet bool `toml:"-"`
|
||||
|
||||
// StaticDirSet indicates if the StaticDir has been explicitly set by the
|
||||
// config or by the user. It's required to guarantee backwards compatibility
|
||||
// with older versions of libpod for which we must query the database
|
||||
// configuration. Not included in the on-disk config.
|
||||
StaticDirSet bool `toml:"-"`
|
||||
|
||||
// VolumePathSet indicates if the VolumePath has been explicitly set by the
|
||||
// config or by the user. It's required to guarantee backwards compatibility
|
||||
// with older versions of libpod for which we must query the database
|
||||
// configuration. Not included in the on-disk config.
|
||||
VolumePathSet bool `toml:"-"`
|
||||
|
||||
// TmpDirSet indicates if the TmpDir has been explicitly set by the config
|
||||
// or by the user. It's required to guarantee backwards compatibility with
|
||||
// older versions of libpod for which we must query the database
|
||||
// configuration. Not included in the on-disk config.
|
||||
TmpDirSet bool `toml:"-"`
|
||||
}
|
||||
|
||||
// NetworkConfig represents the "network" TOML config table
|
||||
|
2
vendor/github.com/containers/common/pkg/config/default.go
generated
vendored
2
vendor/github.com/containers/common/pkg/config/default.go
generated
vendored
@ -306,8 +306,6 @@ func defaultEngineConfig() (*EngineConfig, error) {
|
||||
|
||||
c.graphRoot = storeOpts.GraphRoot
|
||||
c.ImageCopyTmpDir = getDefaultTmpDir()
|
||||
c.StaticDir = filepath.Join(storeOpts.GraphRoot, "libpod")
|
||||
c.VolumePath = filepath.Join(storeOpts.GraphRoot, "volumes")
|
||||
|
||||
c.VolumePluginTimeout = DefaultVolumePluginTimeout
|
||||
c.CompressionFormat = "gzip"
|
||||
|
Reference in New Issue
Block a user