| // +build linux |
| |
| package aufs // import "github.com/docker/docker/daemon/graphdriver/aufs" |
| |
| import ( |
| "bufio" |
| "io/ioutil" |
| "os" |
| "path" |
| ) |
| |
| // Return all the directories |
| func loadIds(root string) ([]string, error) { |
| dirs, err := ioutil.ReadDir(root) |
| if err != nil { |
| return nil, err |
| } |
| var out []string |
| for _, d := range dirs { |
| if !d.IsDir() { |
| out = append(out, d.Name()) |
| } |
| } |
| return out, nil |
| } |
| |
| // Read the layers file for the current id and return all the |
| // layers represented by new lines in the file |
| // |
| // If there are no lines in the file then the id has no parent |
| // and an empty slice is returned. |
| func getParentIDs(root, id string) ([]string, error) { |
| f, err := os.Open(path.Join(root, "layers", id)) |
| if err != nil { |
| return nil, err |
| } |
| defer f.Close() |
| |
| var out []string |
| s := bufio.NewScanner(f) |
| |
| for s.Scan() { |
| if t := s.Text(); t != "" { |
| out = append(out, s.Text()) |
| } |
| } |
| return out, s.Err() |
| } |
| |
| func (a *Driver) getMountpoint(id string) string { |
| return path.Join(a.mntPath(), id) |
| } |
| |
| func (a *Driver) mntPath() string { |
| return path.Join(a.rootPath(), "mnt") |
| } |
| |
| func (a *Driver) getDiffPath(id string) string { |
| return path.Join(a.diffPath(), id) |
| } |
| |
| func (a *Driver) diffPath() string { |
| return path.Join(a.rootPath(), "diff") |
| } |