From 8ddceeb09972cc51e84428fd4851c439e42e350a Mon Sep 17 00:00:00 2001 From: Anusha Ragunathan Date: Wed, 23 Mar 2016 13:20:46 -0700 Subject: [PATCH] Fix use of mounted() in overlay. Handle error and mounted case separately. Signed-off-by: Anusha Ragunathan Upstream-commit: 57ca2a210108d31f8cbe9660bcd6cd469a937ff7 Component: engine --- .../engine/daemon/graphdriver/overlay/overlay.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/components/engine/daemon/graphdriver/overlay/overlay.go b/components/engine/daemon/graphdriver/overlay/overlay.go index fa9b06be6c..9a521ab5f1 100644 --- a/components/engine/daemon/graphdriver/overlay/overlay.go +++ b/components/engine/daemon/graphdriver/overlay/overlay.go @@ -365,6 +365,16 @@ func (d *Driver) Get(id string, mountLabel string) (string, error) { mergedDir := path.Join(dir, "merged") opts := fmt.Sprintf("lowerdir=%s,upperdir=%s,workdir=%s", lowerDir, upperDir, workDir) + + // if it's mounted already, just return + mounted, err := d.mounted(mergedDir) + if err != nil { + return "", err + } + if mounted { + return mergedDir, nil + } + if err := syscall.Mount("overlay", mergedDir, "overlay", 0, label.FormatMountLabel(opts, mountLabel)); err != nil { return "", fmt.Errorf("error creating overlay mount to %s: %v", mergedDir, err) }