github.com/cvmfs/docker-graphdriver@v0.0.0-20181206110523-155ec6df0521/plugins/aufs_cvmfs/aufs/dirs.go (about) 1 // +build linux 2 3 package aufs 4 5 import ( 6 "bufio" 7 "io/ioutil" 8 "os" 9 "path" 10 ) 11 12 // Return all the directories 13 func loadIds(root string) ([]string, error) { 14 dirs, err := ioutil.ReadDir(root) 15 if err != nil { 16 return nil, err 17 } 18 out := []string{} 19 for _, d := range dirs { 20 if !d.IsDir() { 21 out = append(out, d.Name()) 22 } 23 } 24 return out, nil 25 } 26 27 // Read the layers file for the current id and return all the 28 // layers represented by new lines in the file 29 // 30 // If there are no lines in the file then the id has no parent 31 // and an empty slice is returned. 32 func getParentIDs(root, id string) ([]string, error) { 33 f, err := os.Open(path.Join(root, "layers", id)) 34 if err != nil { 35 return nil, err 36 } 37 defer f.Close() 38 39 out := []string{} 40 s := bufio.NewScanner(f) 41 42 for s.Scan() { 43 if t := s.Text(); t != "" { 44 out = append(out, s.Text()) 45 } 46 } 47 return out, s.Err() 48 } 49 50 func (a *Driver) getMountpoint(id string) string { 51 return path.Join(a.mntPath(), id) 52 } 53 54 func (a *Driver) mntPath() string { 55 return path.Join(a.rootPath(), "mnt") 56 } 57 58 func (a *Driver) getDiffPath(id string) string { 59 return path.Join(a.diffPath(), id) 60 } 61 62 func (a *Driver) diffPath() string { 63 return path.Join(a.rootPath(), "diff") 64 }