Merge pull request #47105 from vvoland/c8d-mount-refcount-default

c8d/mount: Use ref-counted mounter by default
This commit is contained in:
Paweł Gronowski 2024-01-18 17:26:22 +01:00 committed by GitHub
commit 7cbf01b994
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -13,9 +13,6 @@ import (
"github.com/moby/sys/mountinfo"
)
// List of known filesystems that can't be re-mounted or have shared layers
var refCountedFileSystems = []string{"fuse-overlayfs", "overlayfs", "stargz", "zfs"}
// Mounter handles mounting/unmounting things coming in from a snapshotter
// with optional reference counting if needed by the filesystem
type Mounter interface {
@ -27,34 +24,17 @@ type Mounter interface {
Mounted(containerID string) (string, error)
}
// inSlice tests whether a string is contained in a slice of strings or not.
// Comparison is case sensitive
func inSlice(slice []string, s string) bool {
for _, ss := range slice {
if s == ss {
return true
}
}
return false
}
// NewMounter creates a new mounter for the provided snapshotter
func NewMounter(home string, snapshotter string, idMap idtools.IdentityMapping) Mounter {
mnter := mounter{
home: home,
snapshotter: snapshotter,
idMap: idMap,
func NewMounter(home string, snapshotter string, idMap idtools.IdentityMapping) *refCountMounter {
return &refCountMounter{
base: mounter{
home: home,
snapshotter: snapshotter,
idMap: idMap,
},
rc: graphdriver.NewRefCounter(checker()),
locker: locker.New(),
}
if inSlice(refCountedFileSystems, snapshotter) {
return &refCountMounter{
base: mnter,
rc: graphdriver.NewRefCounter(checker()),
locker: locker.New(),
}
}
return &mnter
}
type refCountMounter struct {