Преглед изворни кода

Merge pull request #39307 from kolyshkin/aufs-reinstate-mntL

Revert "aufs: remove mntL"
Brian Goff пре 6 година
родитељ
комит
cf406eb359
1 измењених фајлова са 6 додато и 5 уклоњено
  1. 6 5
      daemon/graphdriver/aufs/aufs.go

+ 6 - 5
daemon/graphdriver/aufs/aufs.go

@@ -28,12 +28,10 @@ import (
 	"fmt"
 	"io"
 	"io/ioutil"
-	"math/rand"
 	"os"
 	"os/exec"
 	"path"
 	"path/filepath"
-	"strconv"
 	"strings"
 	"sync"
 	"time"
@@ -82,6 +80,7 @@ type Driver struct {
 	pathCache     map[string]string
 	naiveDiff     graphdriver.DiffDriver
 	locker        *locker.Locker
+	mntL          sync.Mutex
 }
 
 // Init returns a new AUFS driver.
@@ -619,14 +618,14 @@ func (a *Driver) aufsMount(ro []string, rw, target, mountLabel string) (err erro
 		bp += copy(b[bp:], layer)
 	}
 
-	// random 4 characters in the 0-9a-z range (e.g. "g6dz")
-	rnd := strconv.FormatInt(int64(1e9+rand.Uint32()%1e9), 36)[1:5]
-	opts := "dio,xino=/dev/shm/aufs." + rnd
+	opts := "dio,xino=/dev/shm/aufs.xino"
 	if useDirperm() {
 		opts += ",dirperm1"
 	}
 	data := label.FormatMountLabel(fmt.Sprintf("%s,%s", string(b[:bp]), opts), mountLabel)
+	a.mntL.Lock()
 	err = unix.Mount("none", target, "aufs", 0, data)
+	a.mntL.Unlock()
 	if err != nil {
 		err = errors.Wrap(err, "mount target="+target+" data="+data)
 		return
@@ -642,7 +641,9 @@ func (a *Driver) aufsMount(ro []string, rw, target, mountLabel string) (err erro
 			bp += copy(b[bp:], layer)
 		}
 		data := label.FormatMountLabel(string(b[:bp]), mountLabel)
+		a.mntL.Lock()
 		err = unix.Mount("none", target, "aufs", unix.MS_REMOUNT, data)
+		a.mntL.Unlock()
 		if err != nil {
 			err = errors.Wrap(err, "mount target="+target+" flags=MS_REMOUNT data="+data)
 			return