mirror of
https://github.com/containers/podman.git
synced 2025-06-22 01:48:54 +08:00
pkg/spec.InitFSMounts: fix mount opts in place
... rather than create a new slice and then make the caller replace the original with the new one. Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
This commit is contained in:
@ -371,11 +371,9 @@ func (config *CreateConfig) createConfigToOCISpec(runtime *libpod.Runtime, userM
|
||||
// BIND MOUNTS
|
||||
configSpec.Mounts = SupercedeUserMounts(userMounts, configSpec.Mounts)
|
||||
// Process mounts to ensure correct options
|
||||
finalMounts, err := InitFSMounts(configSpec.Mounts)
|
||||
if err != nil {
|
||||
if err := InitFSMounts(configSpec.Mounts); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
configSpec.Mounts = finalMounts
|
||||
|
||||
// BLOCK IO
|
||||
blkio, err := config.CreateBlockIO()
|
||||
|
@ -855,21 +855,19 @@ func SupercedeUserMounts(mounts []spec.Mount, configMount []spec.Mount) []spec.M
|
||||
}
|
||||
|
||||
// Ensure mount options on all mounts are correct
|
||||
func InitFSMounts(inputMounts []spec.Mount) ([]spec.Mount, error) {
|
||||
func InitFSMounts(mounts []spec.Mount) error {
|
||||
// We need to look up mounts so we can figure out the proper mount flags
|
||||
// to apply.
|
||||
systemMounts, err := pmount.GetMounts()
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "error retrieving system mounts to look up mount options")
|
||||
return errors.Wrapf(err, "error retrieving system mounts to look up mount options")
|
||||
}
|
||||
|
||||
// TODO: We probably don't need to re-build the mounts array
|
||||
var mounts []spec.Mount
|
||||
for _, m := range inputMounts {
|
||||
for i, m := range mounts {
|
||||
if m.Type == TypeBind {
|
||||
baseMnt, err := findMount(m.Source, systemMounts)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "error looking up mountpoint for mount %s", m.Source)
|
||||
return errors.Wrapf(err, "error looking up mountpoint for mount %s", m.Source)
|
||||
}
|
||||
var noexec, nosuid, nodev bool
|
||||
for _, baseOpt := range strings.Split(baseMnt.Opts, ",") {
|
||||
@ -890,21 +888,19 @@ func InitFSMounts(inputMounts []spec.Mount) ([]spec.Mount, error) {
|
||||
|
||||
opts, err := util.ProcessOptions(m.Options, false, defaultMountOpts)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return err
|
||||
}
|
||||
m.Options = opts
|
||||
mounts[i].Options = opts
|
||||
}
|
||||
if m.Type == TypeTmpfs && filepath.Clean(m.Destination) != "/dev" {
|
||||
opts, err := util.ProcessOptions(m.Options, true, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return err
|
||||
}
|
||||
m.Options = opts
|
||||
mounts[i].Options = opts
|
||||
}
|
||||
|
||||
mounts = append(mounts, m)
|
||||
}
|
||||
return mounts, nil
|
||||
return nil
|
||||
}
|
||||
|
||||
// TODO: We could make this a bit faster by building a tree of the mountpoints
|
||||
|
Reference in New Issue
Block a user