1
0
mirror of https://github.com/docker/cli.git synced 2026-01-13 18:22:35 +03:00

Windows: Fix reference counting in graphdriver

Signed-off-by: Darren Stahl <darst@microsoft.com>
Upstream-commit: 7fab9b8a6054270763508ce88cb06c584cfeb153
Component: engine
This commit is contained in:
Darren Stahl
2017-03-20 14:57:07 -07:00
parent bdbc2fdcab
commit 72f89cba18

View File

@@ -370,6 +370,9 @@ func (d *Driver) Get(id, mountLabel string) (string, error) {
mountPath, err := hcsshim.GetLayerMountPath(d.info, rID)
if err != nil {
d.ctr.Decrement(rID)
if err := hcsshim.UnprepareLayer(d.info, rID); err != nil {
logrus.Warnf("Failed to Unprepare %s: %s", id, err)
}
if err2 := hcsshim.DeactivateLayer(d.info, rID); err2 != nil {
logrus.Warnf("Failed to Deactivate %s: %s", id, err)
}
@@ -402,9 +405,15 @@ func (d *Driver) Put(id string) error {
return nil
}
d.cacheMu.Lock()
_, exists := d.cache[rID]
delete(d.cache, rID)
d.cacheMu.Unlock()
// If the cache was not populated, then the layer was left unprepared and deactivated
if !exists {
return nil
}
if err := hcsshim.UnprepareLayer(d.info, rID); err != nil {
return err
}