diff options
author | Matthew Heon <matthew.heon@pm.me> | 2019-04-23 15:35:38 -0400 |
---|---|---|
committer | Matthew Heon <matthew.heon@pm.me> | 2019-05-01 10:19:05 -0400 |
commit | 70beb57faa1cfb1a2e9be411628477bc1618c3cf (patch) | |
tree | 73768007a5ba527a30795a67fedbe2b4c00ac3fb | |
parent | 2e00d417dd87dd6648f6c3b604fd25db0c05d9f1 (diff) | |
download | podman-70beb57faa1cfb1a2e9be411628477bc1618c3cf.tar.gz podman-70beb57faa1cfb1a2e9be411628477bc1618c3cf.tar.bz2 podman-70beb57faa1cfb1a2e9be411628477bc1618c3cf.zip |
Fix options for non-bind and non-tmpfs volumes
We were unconditionally resetting volume mount options for all
mount points (and by the looks of things, completely dropping
tmpfs mounts), which was causing runc to refuse to run containers
and all the tests to consequently fail.
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
-rw-r--r-- | pkg/spec/storage.go | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/pkg/spec/storage.go b/pkg/spec/storage.go index 7806a8c72..6f8398513 100644 --- a/pkg/spec/storage.go +++ b/pkg/spec/storage.go @@ -100,6 +100,8 @@ func (config *CreateConfig) parseVolumes(runtime *libpod.Runtime) ([]spec.Mount, unifiedMounts[dest] = tmpfs } + // TODO: Check for conflicts between volumes and named volumes. + // If requested, add container init binary if config.Init { initPath := config.InitPath @@ -143,6 +145,9 @@ func (config *CreateConfig) parseVolumes(runtime *libpod.Runtime) ([]spec.Mount, finalVolumes = append(finalVolumes, volume) } + logrus.Debugf("Got mounts: %v", finalMounts) + logrus.Debugf("Got volumes: %v", finalVolumes) + return finalMounts, finalVolumes, nil } @@ -377,9 +382,6 @@ func getBindMount(args []string) (spec.Mount, error) { newMount.Source = newMount.Destination } - // Process options - newMount.Options = processOptions(newMount.Options) - return newMount, nil } @@ -579,7 +581,7 @@ func (config *CreateConfig) getVolumeMounts() (map[string]spec.Mount, map[string Destination: dest, Type: string(TypeBind), Source: src, - Options: processOptions(options), + Options: options, } if _, ok := mounts[newMount.Destination]; ok { return nil, nil, errors.Wrapf(errDuplicateDest, newMount.Destination) @@ -754,12 +756,13 @@ func supercedeUserMounts(mounts []spec.Mount, configMount []spec.Mount) []spec.M func initFSMounts(inputMounts []spec.Mount) []spec.Mount { var mounts []spec.Mount for _, m := range inputMounts { - m.Options = processOptions(m.Options) - if m.Type == "tmpfs" { + if m.Type == TypeBind { + m.Options = processOptions(m.Options) + } + if m.Type == TypeTmpfs { m.Options = append(m.Options, "tmpcopyup") - } else { - mounts = append(mounts, m) } + mounts = append(mounts, m) } return mounts } |