Skip to content
This repository was archived by the owner on Oct 13, 2023. It is now read-only.

Commit 6328c17

Browse files
tonistiigiTibor Vass
authored andcommitted
builder-next: update mount signature
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com> (cherry picked from commit d495eeb365886e6d729dc8d17c3028be86f98f11) Signed-off-by: Tibor Vass <tibor@docker.com> Upstream-commit: 52cef4bbee371ac6c9c24b77c9e412f244615c73 Component: engine
1 parent b9cd7c5 commit 6328c17

1 file changed

Lines changed: 26 additions & 27 deletions

File tree

  • components/engine/builder/builder-next/adapters/snapshot

components/engine/builder/builder-next/adapters/snapshot/snapshot.go

Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -255,24 +255,23 @@ func (s *snapshotter) Mounts(ctx context.Context, key string) (snapshot.Mountabl
255255
var rwlayer layer.RWLayer
256256
return &mountable{
257257
idmap: s.opt.IdentityMapping,
258-
acquire: func() ([]mount.Mount, error) {
258+
acquire: func() ([]mount.Mount, func() error, error) {
259259
rwlayer, err = s.opt.LayerStore.CreateRWLayer(id, l.ChainID(), nil)
260260
if err != nil {
261-
return nil, err
261+
return nil, nil, err
262262
}
263263
rootfs, err := rwlayer.Mount("")
264264
if err != nil {
265-
return nil, err
265+
return nil, nil, err
266266
}
267267
return []mount.Mount{{
268-
Source: rootfs.Path(),
269-
Type: "bind",
270-
Options: []string{"rbind"},
271-
}}, nil
272-
},
273-
release: func() error {
274-
_, err := s.opt.LayerStore.ReleaseRWLayer(rwlayer)
275-
return err
268+
Source: rootfs.Path(),
269+
Type: "bind",
270+
Options: []string{"rbind"},
271+
}}, func() error {
272+
_, err := s.opt.LayerStore.ReleaseRWLayer(rwlayer)
273+
return err
274+
}, nil
276275
},
277276
}, nil
278277
}
@@ -281,19 +280,18 @@ func (s *snapshotter) Mounts(ctx context.Context, key string) (snapshot.Mountabl
281280

282281
return &mountable{
283282
idmap: s.opt.IdentityMapping,
284-
acquire: func() ([]mount.Mount, error) {
283+
acquire: func() ([]mount.Mount, func() error, error) {
285284
rootfs, err := s.opt.GraphDriver.Get(id, "")
286285
if err != nil {
287-
return nil, err
286+
return nil, nil, err
288287
}
289288
return []mount.Mount{{
290-
Source: rootfs.Path(),
291-
Type: "bind",
292-
Options: []string{"rbind"},
293-
}}, nil
294-
},
295-
release: func() error {
296-
return s.opt.GraphDriver.Put(id)
289+
Source: rootfs.Path(),
290+
Type: "bind",
291+
Options: []string{"rbind"},
292+
}}, func() error {
293+
return s.opt.GraphDriver.Put(id)
294+
}, nil
297295
},
298296
}, nil
299297
}
@@ -440,32 +438,33 @@ func (s *snapshotter) Close() error {
440438
type mountable struct {
441439
mu sync.Mutex
442440
mounts []mount.Mount
443-
acquire func() ([]mount.Mount, error)
441+
acquire func() ([]mount.Mount, func() error, error)
444442
release func() error
445443
refCount int
446444
idmap *idtools.IdentityMapping
447445
}
448446

449-
func (m *mountable) Mount() ([]mount.Mount, error) {
447+
func (m *mountable) Mount() ([]mount.Mount, func() error, error) {
450448
m.mu.Lock()
451449
defer m.mu.Unlock()
452450

453451
if m.mounts != nil {
454452
m.refCount++
455-
return m.mounts, nil
453+
return m.mounts, m.releaseMount, nil
456454
}
457455

458-
mounts, err := m.acquire()
456+
mounts, release, err := m.acquire()
459457
if err != nil {
460-
return nil, err
458+
return nil, nil, err
461459
}
462460
m.mounts = mounts
461+
m.release = release
463462
m.refCount = 1
464463

465-
return m.mounts, nil
464+
return m.mounts, m.releaseMount, nil
466465
}
467466

468-
func (m *mountable) Release() error {
467+
func (m *mountable) releaseMount() error {
469468
m.mu.Lock()
470469
defer m.mu.Unlock()
471470

0 commit comments

Comments
 (0)