mirror of
https://github.com/docker/cli.git
synced 2026-01-18 08:21:31 +03:00
Protect aufs mounts with locks
Parallel aufs mount calls produce invalid argument error. Fixes #21545 Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com> Upstream-commit: 824c24e6802ad3ed7e26b4f16e5ae81869b98185 Component: engine
This commit is contained in:
@@ -67,6 +67,7 @@ func init() {
|
||||
|
||||
// Driver contains information about the filesystem mounted.
|
||||
type Driver struct {
|
||||
sync.Mutex
|
||||
root string
|
||||
uidMaps []idtools.IDMap
|
||||
gidMaps []idtools.IDMap
|
||||
@@ -418,6 +419,9 @@ func (a *Driver) getParentLayerPaths(id string) ([]string, error) {
|
||||
}
|
||||
|
||||
func (a *Driver) mount(id string, target string, mountLabel string, layers []string) error {
|
||||
a.Lock()
|
||||
defer a.Unlock()
|
||||
|
||||
// If the id is mounted or we get an error return
|
||||
if mounted, err := a.mounted(target); err != nil || mounted {
|
||||
return err
|
||||
@@ -432,6 +436,9 @@ func (a *Driver) mount(id string, target string, mountLabel string, layers []str
|
||||
}
|
||||
|
||||
func (a *Driver) unmount(mountPath string) error {
|
||||
a.Lock()
|
||||
defer a.Unlock()
|
||||
|
||||
if mounted, err := a.mounted(mountPath); err != nil || !mounted {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user