github.com/nguyentm83/docker@v1.5.0/pkg/mount/sharedsubtree_linux.go (about) 1 // +build linux 2 3 package mount 4 5 func MakeShared(mountPoint string) error { 6 return ensureMountedAs(mountPoint, "shared") 7 } 8 9 func MakeRShared(mountPoint string) error { 10 return ensureMountedAs(mountPoint, "rshared") 11 } 12 13 func MakePrivate(mountPoint string) error { 14 return ensureMountedAs(mountPoint, "private") 15 } 16 17 func MakeRPrivate(mountPoint string) error { 18 return ensureMountedAs(mountPoint, "rprivate") 19 } 20 21 func MakeSlave(mountPoint string) error { 22 return ensureMountedAs(mountPoint, "slave") 23 } 24 25 func MakeRSlave(mountPoint string) error { 26 return ensureMountedAs(mountPoint, "rslave") 27 } 28 29 func MakeUnbindable(mountPoint string) error { 30 return ensureMountedAs(mountPoint, "unbindable") 31 } 32 33 func MakeRUnbindable(mountPoint string) error { 34 return ensureMountedAs(mountPoint, "runbindable") 35 } 36 37 func ensureMountedAs(mountPoint, options string) error { 38 mounted, err := Mounted(mountPoint) 39 if err != nil { 40 return err 41 } 42 43 if !mounted { 44 if err := Mount(mountPoint, mountPoint, "none", "bind,rw"); err != nil { 45 return err 46 } 47 } 48 mounted, err = Mounted(mountPoint) 49 if err != nil { 50 return err 51 } 52 53 return ForceMount("", mountPoint, "none", options) 54 }