Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package podman for openSUSE:Factory checked in at 2023-01-18 13:08:24 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/podman (Old) and /work/SRC/openSUSE:Factory/.podman.new.32243 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "podman" Wed Jan 18 13:08:24 2023 rev:102 rq:1058898 version:4.3.1 Changes: -------- --- /work/SRC/openSUSE:Factory/podman/podman.changes 2022-12-08 16:50:34.151293799 +0100 +++ /work/SRC/openSUSE:Factory/.podman.new.32243/podman.changes 2023-01-18 13:08:27.496006198 +0100 @@ -1,0 +2,13 @@ +Tue Jan 17 10:42:42 UTC 2023 - Danish Prakash <danish.prak...@suse.com> + +- add patch: 0003-Only-override-the-graphdriver-to-vfs-if-the-priority.patch + (backport of https://github.com/containers/storage/pull/1468) + +------------------------------------------------------------------- +Fri Jan 13 12:46:24 UTC 2023 - Danish Prakash <danish.prak...@suse.com> + +- Make the priority for picking the storage driver configurable (bsc#1197093) + (backport of https://github.com/containers/storage/pull/1460) +- add patch: 0002-Make-the-priority-for-picking-the-storage-driver-con.patch + +------------------------------------------------------------------- New: ---- 0002-Make-the-priority-for-picking-the-storage-driver-con.patch 0003-Only-override-the-graphdriver-to-vfs-if-the-priority.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ podman.spec ++++++ --- /var/tmp/diff_new_pack.BBztNT/_old 2023-01-18 13:08:28.844013428 +0100 +++ /var/tmp/diff_new_pack.BBztNT/_new 2023-01-18 13:08:28.848013449 +0100 @@ -29,6 +29,8 @@ Source2: README.SUSE.SLES # hotfix for https://github.com/containers/podman/issues/16765 Patch0: 0001-Revert-Default-missing-hostPort-to-containerPort-is-.patch +Patch1: 0002-Make-the-priority-for-picking-the-storage-driver-con.patch +Patch2: 0003-Only-override-the-graphdriver-to-vfs-if-the-priority.patch BuildRequires: bash-completion BuildRequires: cni BuildRequires: device-mapper-devel ++++++ 0002-Make-the-priority-for-picking-the-storage-driver-con.patch ++++++ >From 575166520c8f7e9c46b63bc2b47721512613614b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= <dcer...@suse.com> Date: Tue, 3 Jan 2023 16:34:25 +0100 Subject: [PATCH 1/2] Make the priority for picking the storage driver configurable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes https://github.com/containers/storage/issues/1457 Co-authored-by: Valentin Rothberg <vrothb...@redhat.com> Signed-off-by: Dan Äermák <dcer...@suse.com> --- .../containers/storage/drivers/driver.go | 18 +++- vendor/github.com/containers/storage/store.go | 89 ++++++++++--------- .../containers/storage/types/options.go | 14 ++- 3 files changed, 71 insertions(+), 50 deletions(-) diff --git a/vendor/github.com/containers/storage/drivers/driver.go b/vendor/github.com/containers/storage/drivers/driver.go index 7d96ebe54..68d1956b8 100644 --- a/vendor/github.com/containers/storage/drivers/driver.go +++ b/vendor/github.com/containers/storage/drivers/driver.go @@ -312,6 +312,7 @@ func getBuiltinDriver(name, home string, options Options) (Driver, error) { type Options struct { Root string RunRoot string + DriverPriority []string DriverOptions []string UIDMaps []idtools.IDMap GIDMaps []idtools.IDMap @@ -327,9 +328,18 @@ func New(name string, config Options) (Driver, error) { // Guess for prior driver driversMap := scanPriorDrivers(config.Root) - for _, name := range priority { - if name == "vfs" { - // don't use vfs even if there is state present. + + // use the supplied priority list unless it is empty + prioList := config.DriverPriority + if len(prioList) == 0 { + prioList = priority + } + + for _, name := range prioList { + if name == "vfs" && len(config.DriverPriority) == 0 { + // don't use vfs even if there is state present and vfs + // has not been explicitly added to the override driver + // priority list continue } if _, prior := driversMap[name]; prior { @@ -362,7 +372,7 @@ func New(name string, config Options) (Driver, error) { } // Check for priority drivers first - for _, name := range priority { + for _, name := range prioList { driver, err := getBuiltinDriver(name, config.Root, config) if err != nil { if isDriverNotSupported(err) { diff --git a/vendor/github.com/containers/storage/store.go b/vendor/github.com/containers/storage/store.go index fb1faaa13..7dc8df948 100644 --- a/vendor/github.com/containers/storage/store.go +++ b/vendor/github.com/containers/storage/store.go @@ -606,29 +606,30 @@ type ContainerOptions struct { } type store struct { - lastLoaded time.Time - runRoot string - graphLock Locker - usernsLock Locker - graphRoot string - graphDriverName string - graphOptions []string - pullOptions map[string]string - uidMap []idtools.IDMap - gidMap []idtools.IDMap - autoUsernsUser string - additionalUIDs *idSet // Set by getAvailableIDs() - additionalGIDs *idSet // Set by getAvailableIDs() - autoNsMinSize uint32 - autoNsMaxSize uint32 - graphDriver drivers.Driver - layerStore LayerStore - roLayerStores []ROLayerStore - imageStore ImageStore - roImageStores []ROImageStore - containerStore ContainerStore - digestLockRoot string - disableVolatile bool + lastLoaded time.Time + runRoot string + graphLock Locker + usernsLock Locker + graphRoot string + graphDriverName string + graphOptions []string + graphDriverPriority []string + pullOptions map[string]string + uidMap []idtools.IDMap + gidMap []idtools.IDMap + autoUsernsUser string + additionalUIDs *idSet // Set by getAvailableIDs() + additionalGIDs *idSet // Set by getAvailableIDs() + autoNsMinSize uint32 + autoNsMaxSize uint32 + graphDriver drivers.Driver + layerStore LayerStore + roLayerStores []ROLayerStore + imageStore ImageStore + roImageStores []ROImageStore + containerStore ContainerStore + digestLockRoot string + disableVolatile bool } // GetStore attempts to find an already-created Store object matching the @@ -724,21 +725,22 @@ func GetStore(options types.StoreOptions) (Store, error) { autoNsMaxSize = AutoUserNsMaxSize } s := &store{ - runRoot: options.RunRoot, - graphLock: graphLock, - graphRoot: options.GraphRoot, - graphDriverName: options.GraphDriverName, - graphOptions: options.GraphDriverOptions, - uidMap: copyIDMap(options.UIDMap), - gidMap: copyIDMap(options.GIDMap), - autoUsernsUser: options.RootAutoNsUser, - autoNsMinSize: autoNsMinSize, - autoNsMaxSize: autoNsMaxSize, - additionalUIDs: nil, - additionalGIDs: nil, - usernsLock: usernsLock, - disableVolatile: options.DisableVolatile, - pullOptions: options.PullOptions, + runRoot: options.RunRoot, + graphLock: graphLock, + graphRoot: options.GraphRoot, + graphDriverName: options.GraphDriverName, + graphDriverPriority: options.GraphDriverPriority, + graphOptions: options.GraphDriverOptions, + uidMap: copyIDMap(options.UIDMap), + gidMap: copyIDMap(options.GIDMap), + autoUsernsUser: options.RootAutoNsUser, + autoNsMinSize: autoNsMinSize, + autoNsMaxSize: autoNsMaxSize, + additionalUIDs: nil, + additionalGIDs: nil, + usernsLock: usernsLock, + disableVolatile: options.DisableVolatile, + pullOptions: options.PullOptions, } if err := s.load(); err != nil { return nil, err @@ -868,11 +870,12 @@ func (s *store) getGraphDriver() (drivers.Driver, error) { return s.graphDriver, nil } config := drivers.Options{ - Root: s.graphRoot, - RunRoot: s.runRoot, - DriverOptions: s.graphOptions, - UIDMaps: s.uidMap, - GIDMaps: s.gidMap, + Root: s.graphRoot, + RunRoot: s.runRoot, + DriverOptions: s.graphOptions, + DriverPriority: s.graphDriverPriority, + UIDMaps: s.uidMap, + GIDMaps: s.gidMap, } driver, err := drivers.New(s.graphDriverName, config) if err != nil { diff --git a/vendor/github.com/containers/storage/types/options.go b/vendor/github.com/containers/storage/types/options.go index 4c873b45f..4fbe512a9 100644 --- a/vendor/github.com/containers/storage/types/options.go +++ b/vendor/github.com/containers/storage/types/options.go @@ -19,6 +19,7 @@ import ( type TomlConfig struct { Storage struct { Driver string `toml:"driver,omitempty"` + DriverPriority []string `toml:"driver_priority,omitempty"` RunRoot string `toml:"runroot,omitempty"` GraphRoot string `toml:"graphroot,omitempty"` RootlessStoragePath string `toml:"rootless_storage_path,omitempty"` @@ -189,10 +190,16 @@ type StoreOptions struct { // RootlessStoragePath is the storage path for rootless users // default $HOME/.local/share/containers/storage RootlessStoragePath string `toml:"rootless_storage_path"` - // GraphDriverName is the underlying storage driver that we'll be - // using. It only needs to be specified the first time a Store is - // initialized for a given RunRoot and GraphRoot. + // If the driver is not specified, the best suited driver will be picked + // either from GraphDriverPriority, if specified, or from the platform + // dependent priority list (in that order). GraphDriverName string `json:"driver,omitempty"` + // GraphDriverPriority is a list of storage drivers that will be tried + // to initialize the Store for a given RunRoot and GraphRoot unless a + // GraphDriverName is set. + // This list can be used to define a custom order in which the drivers + // will be tried. + GraphDriverPriority []string `json:"driver-priority,omitempty"` // GraphDriverOptions are driver-specific options. GraphDriverOptions []string `json:"driver-options,omitempty"` // UIDMap and GIDMap are used for setting up a container's root filesystem @@ -357,6 +364,7 @@ func ReloadConfigurationFile(configFile string, storeOptions *StoreOptions) erro if storeOptions.GraphDriverName == "" { logrus.Errorf("The storage 'driver' option must be set in %s to guarantee proper operation", configFile) } + storeOptions.GraphDriverPriority = config.Storage.DriverPriority if config.Storage.RunRoot != "" { storeOptions.RunRoot = config.Storage.RunRoot } -- 2.39.0 >From de3c3805b23abf90ce1300cf78686411abc57644 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= <dcer...@suse.com> Date: Fri, 6 Jan 2023 08:22:57 +0100 Subject: [PATCH 2/2] Only warn about 'driver' not being set if the priority list is unset MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently we would display an error when the user does not specify a `driver` in their config file. This has been present for historical reasons mostly to prevent users from accidentally getting the vfs driver (https://github.com/containers/storage/pull/1460#issuecomment-1370866271). Now that most systems support the overlay driver natively, we can reduce this to a warning and only warn about it if the driver_priority list is unset. If it is provided, then clearly the user or the distribution wanted for c/storage to pick a driver itself and the warning would be only confusing to users. Signed-off-by: Dan Äermák <dcer...@suse.com> --- vendor/github.com/containers/storage/types/options.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vendor/github.com/containers/storage/types/options.go b/vendor/github.com/containers/storage/types/options.go index 4fbe512a9..e87f458cc 100644 --- a/vendor/github.com/containers/storage/types/options.go +++ b/vendor/github.com/containers/storage/types/options.go @@ -361,10 +361,10 @@ func ReloadConfigurationFile(configFile string, storeOptions *StoreOptions) erro logrus.Warnf("Switching default driver from overlay2 to the equivalent overlay driver") storeOptions.GraphDriverName = overlayDriver } - if storeOptions.GraphDriverName == "" { - logrus.Errorf("The storage 'driver' option must be set in %s to guarantee proper operation", configFile) - } storeOptions.GraphDriverPriority = config.Storage.DriverPriority + if storeOptions.GraphDriverName == "" && len(storeOptions.GraphDriverPriority) == 0 { + logrus.Warnf("The storage 'driver' option should be set in %s. A driver was picked automatically.", configFile) + } if config.Storage.RunRoot != "" { storeOptions.RunRoot = config.Storage.RunRoot } -- 2.39.0 ++++++ 0003-Only-override-the-graphdriver-to-vfs-if-the-priority.patch ++++++ >From 3f6a1954ff440959adcc44cc58372ed13ae2dbb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= <dcer...@suse.com> Date: Fri, 13 Jan 2023 14:39:54 +0100 Subject: [PATCH] Only override the graphdriver to vfs if the priority is unset MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is an amend to https://github.com/containers/storage/pull/1460 That PR was not addressing the case when the system wide config had the driver_priority option configured and the user had no config file of their own. Then `getRootlessStorageOpts` would be called and it would override the graph driver to "vfs". With this commit we only override the graph driver if driver priority is empty. Otherwise we propagate the driver priority into the storage options, so that the driver autodetection works as expected. Signed-off-by: Dan Äermák <dcer...@suse.com> --- vendor/github.com/containers/storage/types/options.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/vendor/github.com/containers/storage/types/options.go b/vendor/github.com/containers/storage/types/options.go index e87f458cc..eb7142ff2 100644 --- a/vendor/github.com/containers/storage/types/options.go +++ b/vendor/github.com/containers/storage/types/options.go @@ -274,7 +274,11 @@ func getRootlessStorageOpts(rootlessUID int, systemOpts StoreOptions) (StoreOpti } } if opts.GraphDriverName == "" { - opts.GraphDriverName = "vfs" + if len(systemOpts.GraphDriverPriority) == 0 { + opts.GraphDriverName = "vfs" + } else { + opts.GraphDriverPriority = systemOpts.GraphDriverPriority + } } if os.Getenv("STORAGE_OPTS") != "" { -- 2.39.0