diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2019-06-14 15:44:44 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-14 15:44:44 +0200 |
commit | 0ea95da7b9fcbcbe7e4ebab78f2950972c70ba68 (patch) | |
tree | 94f1f158a2bdbeecc0fe5a41b7f8474b657253a9 /pkg | |
parent | d5f04e920bf0cca02c9efe25ceca7639cbf31644 (diff) | |
parent | 23efe4cb819b9fb306155ab25db7e2459aba63bb (diff) | |
download | podman-0ea95da7b9fcbcbe7e4ebab78f2950972c70ba68.tar.gz podman-0ea95da7b9fcbcbe7e4ebab78f2950972c70ba68.tar.bz2 podman-0ea95da7b9fcbcbe7e4ebab78f2950972c70ba68.zip |
Merge pull request #3315 from giuseppe/support-bind-nonrecursive
storage: support --mount type=bind,bind-nonrecursive
Diffstat (limited to 'pkg')
-rw-r--r-- | pkg/spec/storage.go | 11 | ||||
-rw-r--r-- | pkg/util/mountOpts.go | 15 |
2 files changed, 21 insertions, 5 deletions
diff --git a/pkg/spec/storage.go b/pkg/spec/storage.go index e221b5cb5..283585ef8 100644 --- a/pkg/spec/storage.go +++ b/pkg/spec/storage.go @@ -384,7 +384,7 @@ func (config *CreateConfig) getMounts() (map[string]spec.Mount, map[string]*libp } finalNamedVolumes[volume.Dest] = volume default: - return nil, nil, errors.Errorf("invalid fylesystem type %q", kv[1]) + return nil, nil, errors.Errorf("invalid filesystem type %q", kv[1]) } } @@ -403,6 +403,8 @@ func getBindMount(args []string) (spec.Mount, error) { for _, val := range args { kv := strings.Split(val, "=") switch kv[0] { + case "bind-nonrecursive": + newMount.Options = append(newMount.Options, "bind") case "ro", "nosuid", "nodev", "noexec": // TODO: detect duplication of these options. // (Is this necessary?) @@ -574,7 +576,7 @@ func ValidateVolumeCtrDir(ctrDir string) error { // ValidateVolumeOpts validates a volume's options func ValidateVolumeOpts(options []string) error { - var foundRootPropagation, foundRWRO, foundLabelChange int + var foundRootPropagation, foundRWRO, foundLabelChange, bindType int for _, opt := range options { switch opt { case "rw", "ro": @@ -592,6 +594,11 @@ func ValidateVolumeOpts(options []string) error { if foundRootPropagation > 1 { return errors.Errorf("invalid options %q, can only specify 1 '[r]shared', '[r]private' or '[r]slave' option", strings.Join(options, ", ")) } + case "bind", "rbind": + bindType++ + if bindType > 1 { + return errors.Errorf("invalid options %q, can only specify 1 '[r]bind' option", strings.Join(options, ", ")) + } default: return errors.Errorf("invalid option type %q", opt) } diff --git a/pkg/util/mountOpts.go b/pkg/util/mountOpts.go index 59459807c..489e7eeef 100644 --- a/pkg/util/mountOpts.go +++ b/pkg/util/mountOpts.go @@ -17,10 +17,19 @@ var ( // sensible and follow convention. func ProcessOptions(options []string) []string { var ( - foundrw, foundro bool - rootProp string + foundbind, foundrw, foundro bool + rootProp string ) - options = append(options, "rbind") + for _, opt := range options { + switch opt { + case "bind", "rbind": + foundbind = true + break + } + } + if !foundbind { + options = append(options, "rbind") + } for _, opt := range options { switch opt { case "rw": |