Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
(cherry picked from commit 64530c8e47ec663827cceb28fc64b12da5e56147)
... | ... |
@@ -498,18 +498,21 @@ func (ls *layerStore) ReleaseRWLayer(l RWLayer) ([]Metadata, error) { |
498 | 498 |
|
499 | 499 |
if err := ls.driver.Remove(m.mountID); err != nil { |
500 | 500 |
logrus.Errorf("Error removing mounted layer %s: %s", m.name, err) |
501 |
+ m.retakeReference(l) |
|
501 | 502 |
return nil, err |
502 | 503 |
} |
503 | 504 |
|
504 | 505 |
if m.initID != "" { |
505 | 506 |
if err := ls.driver.Remove(m.initID); err != nil { |
506 | 507 |
logrus.Errorf("Error removing init layer %s: %s", m.name, err) |
508 |
+ m.retakeReference(l) |
|
507 | 509 |
return nil, err |
508 | 510 |
} |
509 | 511 |
} |
510 | 512 |
|
511 | 513 |
if err := ls.store.RemoveMount(m.name); err != nil { |
512 | 514 |
logrus.Errorf("Error removing mount metadata: %s: %s", m.name, err) |
515 |
+ m.retakeReference(l) |
|
513 | 516 |
return nil, err |
514 | 517 |
} |
515 | 518 |
|
... | ... |
@@ -96,6 +96,13 @@ func (ml *mountedLayer) deleteReference(ref RWLayer) error { |
96 | 96 |
return nil |
97 | 97 |
} |
98 | 98 |
|
99 |
+func (ml *mountedLayer) retakeReference(r RWLayer) { |
|
100 |
+ if ref, ok := r.(*referencedRWLayer); ok { |
|
101 |
+ ref.activityCount = 0 |
|
102 |
+ ml.references[ref] = ref |
|
103 |
+ } |
|
104 |
+} |
|
105 |
+ |
|
99 | 106 |
type referencedRWLayer struct { |
100 | 107 |
*mountedLayer |
101 | 108 |
|