|
@@ -71,10 +71,13 @@ var (
|
|
|
// that mounts do not fail due to length.
|
|
|
|
|
|
const (
|
|
|
- driverName = "overlay2"
|
|
|
- linkDir = "l"
|
|
|
- lowerFile = "lower"
|
|
|
- maxDepth = 128
|
|
|
+ driverName = "overlay2"
|
|
|
+ linkDir = "l"
|
|
|
+ diffDirName = "diff"
|
|
|
+ workDirName = "work"
|
|
|
+ mergedDirName = "merged"
|
|
|
+ lowerFile = "lower"
|
|
|
+ maxDepth = 128
|
|
|
|
|
|
// idLength represents the number of random characters
|
|
|
// which can be used to create the unique link identifier
|
|
@@ -326,9 +329,9 @@ func (d *Driver) GetMetadata(id string) (map[string]string, error) {
|
|
|
}
|
|
|
|
|
|
metadata := map[string]string{
|
|
|
- "WorkDir": path.Join(dir, "work"),
|
|
|
- "MergedDir": path.Join(dir, "merged"),
|
|
|
- "UpperDir": path.Join(dir, "diff"),
|
|
|
+ "WorkDir": path.Join(dir, workDirName),
|
|
|
+ "MergedDir": path.Join(dir, mergedDirName),
|
|
|
+ "UpperDir": path.Join(dir, diffDirName),
|
|
|
}
|
|
|
|
|
|
lowerDirs, err := d.getLowerDirs(id)
|
|
@@ -420,12 +423,12 @@ func (d *Driver) create(id, parent string, opts *graphdriver.CreateOpts) (retErr
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if err := idtools.MkdirAndChown(path.Join(dir, "diff"), 0755, root); err != nil {
|
|
|
+ if err := idtools.MkdirAndChown(path.Join(dir, diffDirName), 0755, root); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
lid := generateID(idLength)
|
|
|
- if err := os.Symlink(path.Join("..", id, "diff"), path.Join(d.home, linkDir, lid)); err != nil {
|
|
|
+ if err := os.Symlink(path.Join("..", id, diffDirName), path.Join(d.home, linkDir, lid)); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
|
|
@@ -439,7 +442,7 @@ func (d *Driver) create(id, parent string, opts *graphdriver.CreateOpts) (retErr
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
- if err := idtools.MkdirAndChown(path.Join(dir, "work"), 0700, root); err != nil {
|
|
|
+ if err := idtools.MkdirAndChown(path.Join(dir, workDirName), 0700, root); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
|
|
@@ -555,7 +558,7 @@ func (d *Driver) Get(id, mountLabel string) (_ containerfs.ContainerFS, retErr e
|
|
|
return nil, err
|
|
|
}
|
|
|
|
|
|
- diffDir := path.Join(dir, "diff")
|
|
|
+ diffDir := path.Join(dir, diffDirName)
|
|
|
lowers, err := ioutil.ReadFile(path.Join(dir, lowerFile))
|
|
|
if err != nil {
|
|
|
// If no lower, just return diff directory
|
|
@@ -565,7 +568,7 @@ func (d *Driver) Get(id, mountLabel string) (_ containerfs.ContainerFS, retErr e
|
|
|
return nil, err
|
|
|
}
|
|
|
|
|
|
- mergedDir := path.Join(dir, "merged")
|
|
|
+ mergedDir := path.Join(dir, mergedDirName)
|
|
|
if count := d.ctr.Increment(mergedDir); count > 1 {
|
|
|
return containerfs.NewLocalContainerFS(mergedDir), nil
|
|
|
}
|
|
@@ -583,13 +586,13 @@ func (d *Driver) Get(id, mountLabel string) (_ containerfs.ContainerFS, retErr e
|
|
|
}
|
|
|
}()
|
|
|
|
|
|
- workDir := path.Join(dir, "work")
|
|
|
+ workDir := path.Join(dir, workDirName)
|
|
|
splitLowers := strings.Split(string(lowers), ":")
|
|
|
absLowers := make([]string, len(splitLowers))
|
|
|
for i, s := range splitLowers {
|
|
|
absLowers[i] = path.Join(d.home, s)
|
|
|
}
|
|
|
- opts := indexOff + "lowerdir=" + strings.Join(absLowers, ":") + ",upperdir=" + path.Join(dir, "diff") + ",workdir=" + path.Join(dir, "work")
|
|
|
+ opts := indexOff + "lowerdir=" + strings.Join(absLowers, ":") + ",upperdir=" + diffDir + ",workdir=" + workDir
|
|
|
mountData := label.FormatMountLabel(opts, mountLabel)
|
|
|
mount := unix.Mount
|
|
|
mountTarget := mergedDir
|
|
@@ -609,7 +612,7 @@ func (d *Driver) Get(id, mountLabel string) (_ containerfs.ContainerFS, retErr e
|
|
|
// fit within a page and relative links make the mount data much
|
|
|
// smaller at the expense of requiring a fork exec to chroot.
|
|
|
if len(mountData) > pageSize {
|
|
|
- opts = indexOff + "lowerdir=" + string(lowers) + ",upperdir=" + path.Join(id, "diff") + ",workdir=" + path.Join(id, "work")
|
|
|
+ opts = indexOff + "lowerdir=" + string(lowers) + ",upperdir=" + path.Join(id, diffDirName) + ",workdir=" + path.Join(id, workDirName)
|
|
|
mountData = label.FormatMountLabel(opts, mountLabel)
|
|
|
if len(mountData) > pageSize {
|
|
|
return nil, fmt.Errorf("cannot mount layer, mount label too large %d", len(mountData))
|
|
@@ -618,7 +621,7 @@ func (d *Driver) Get(id, mountLabel string) (_ containerfs.ContainerFS, retErr e
|
|
|
mount = func(source string, target string, mType string, flags uintptr, label string) error {
|
|
|
return mountFrom(d.home, source, target, mType, flags, label)
|
|
|
}
|
|
|
- mountTarget = path.Join(id, "merged")
|
|
|
+ mountTarget = path.Join(id, mergedDirName)
|
|
|
}
|
|
|
|
|
|
if err := mount("overlay", mountTarget, "overlay", 0, mountData); err != nil {
|
|
@@ -627,7 +630,7 @@ func (d *Driver) Get(id, mountLabel string) (_ containerfs.ContainerFS, retErr e
|
|
|
|
|
|
// chown "workdir/work" to the remapped root UID/GID. Overlay fs inside a
|
|
|
// user namespace requires this to move a directory from lower to upper.
|
|
|
- if err := os.Chown(path.Join(workDir, "work"), rootUID, rootGID); err != nil {
|
|
|
+ if err := os.Chown(path.Join(workDir, workDirName), rootUID, rootGID); err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
|
|
@@ -650,7 +653,7 @@ func (d *Driver) Put(id string) error {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
- mountpoint := path.Join(dir, "merged")
|
|
|
+ mountpoint := path.Join(dir, mergedDirName)
|
|
|
if count := d.ctr.Decrement(mountpoint); count > 0 {
|
|
|
return nil
|
|
|
}
|
|
@@ -723,7 +726,7 @@ func (d *Driver) ApplyDiff(id string, parent string, diff io.Reader) (size int64
|
|
|
func (d *Driver) getDiffPath(id string) string {
|
|
|
dir := d.dir(id)
|
|
|
|
|
|
- return path.Join(dir, "diff")
|
|
|
+ return path.Join(dir, diffDirName)
|
|
|
}
|
|
|
|
|
|
// DiffSize calculates the changes between the specified id
|