Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
| ... | ... |
@@ -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 |
|