From 639ab92f011245e17e9a293455a8dae1eb034022 Mon Sep 17 00:00:00 2001 From: Euan Kemp Date: Wed, 20 Sep 2017 15:20:43 -0700 Subject: [PATCH] overlay2: fix faulty errcheck The change in 7a7357dae1bcccb17e9b2d4c7c8f5c025fce56ca inadvertently changed the `defer` error code into a no-op. This restores its behavior prior to that code change, and also introduces a little more error logging. Signed-off-by: Euan Kemp --- daemon/graphdriver/overlay2/overlay.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/daemon/graphdriver/overlay2/overlay.go b/daemon/graphdriver/overlay2/overlay.go index 9650975b3c..f350ca9c0b 100644 --- a/daemon/graphdriver/overlay2/overlay.go +++ b/daemon/graphdriver/overlay2/overlay.go @@ -515,7 +515,7 @@ func (d *Driver) Remove(id string) error { } // Get creates and mounts the required file system for the given id and returns the mount path. -func (d *Driver) Get(id, mountLabel string) (containerfs.ContainerFS, error) { +func (d *Driver) Get(id, mountLabel string) (_ containerfs.ContainerFS, retErr error) { d.locker.Lock(id) defer d.locker.Unlock(id) dir := d.dir(id) @@ -538,9 +538,11 @@ func (d *Driver) Get(id, mountLabel string) (containerfs.ContainerFS, error) { return containerfs.NewLocalContainerFS(mergedDir), nil } defer func() { - if err != nil { + if retErr != nil { if c := d.ctr.Decrement(mergedDir); c <= 0 { - unix.Unmount(mergedDir, 0) + if mntErr := unix.Unmount(mergedDir, 0); mntErr != nil { + logrus.Errorf("error unmounting %v: %v", mergedDir, mntErr) + } } } }()