summaryrefslogtreecommitdiff
path: root/vendor/github.com/moby/sys/mountinfo
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/moby/sys/mountinfo')
-rw-r--r--vendor/github.com/moby/sys/mountinfo/mountinfo.go33
-rw-r--r--vendor/github.com/moby/sys/mountinfo/mountinfo_filters.go11
-rw-r--r--vendor/github.com/moby/sys/mountinfo/mountinfo_linux.go5
3 files changed, 28 insertions, 21 deletions
diff --git a/vendor/github.com/moby/sys/mountinfo/mountinfo.go b/vendor/github.com/moby/sys/mountinfo/mountinfo.go
index fe828c8f5..403a89331 100644
--- a/vendor/github.com/moby/sys/mountinfo/mountinfo.go
+++ b/vendor/github.com/moby/sys/mountinfo/mountinfo.go
@@ -29,35 +29,38 @@ type Info struct {
// ID is a unique identifier of the mount (may be reused after umount).
ID int
- // Parent indicates the ID of the mount parent (or of self for the top of the
- // mount tree).
+ // Parent is the ID of the parent mount (or of self for the root
+ // of this mount namespace's mount tree).
Parent int
- // Major indicates one half of the device ID which identifies the device class.
- Major int
+ // Major and Minor are the major and the minor components of the Dev
+ // field of unix.Stat_t structure returned by unix.*Stat calls for
+ // files on this filesystem.
+ Major, Minor int
- // Minor indicates one half of the device ID which identifies a specific
- // instance of device.
- Minor int
-
- // Root of the mount within the filesystem.
+ // Root is the pathname of the directory in the filesystem which forms
+ // the root of this mount.
Root string
- // Mountpoint indicates the mount point relative to the process's root.
+ // Mountpoint is the pathname of the mount point relative to the
+ // process's root directory.
Mountpoint string
- // Options represents mount-specific options.
+ // Options is a comma-separated list of mount options.
Options string
- // Optional represents optional fields.
+ // Optional are zero or more fields of the form "tag[:value]",
+ // separated by a space. Currently, the possible optional fields are
+ // "shared", "master", "propagate_from", and "unbindable". For more
+ // information, see mount_namespaces(7) Linux man page.
Optional string
- // FSType indicates the type of filesystem, such as EXT3.
+ // FSType is the filesystem type in the form "type[.subtype]".
FSType string
- // Source indicates filesystem specific information or "none".
+ // Source is filesystem-specific information, or "none".
Source string
- // VFSOptions represents per super block options.
+ // VFSOptions is a comma-separated list of superblock options.
VFSOptions string
}
diff --git a/vendor/github.com/moby/sys/mountinfo/mountinfo_filters.go b/vendor/github.com/moby/sys/mountinfo/mountinfo_filters.go
index 5869b2cee..16079c3c5 100644
--- a/vendor/github.com/moby/sys/mountinfo/mountinfo_filters.go
+++ b/vendor/github.com/moby/sys/mountinfo/mountinfo_filters.go
@@ -14,11 +14,16 @@ import "strings"
// stop: true if parsing should be stopped after the entry.
type FilterFunc func(*Info) (skip, stop bool)
-// PrefixFilter discards all entries whose mount points
-// do not start with a specific prefix.
+// PrefixFilter discards all entries whose mount points do not start with, or
+// are equal to the path specified in prefix. The prefix path must be absolute,
+// have all symlinks resolved, and cleaned (i.e. no extra slashes or dots).
+//
+// PrefixFilter treats prefix as a path, not a partial prefix, which means that
+// given "/foo", "/foo/bar" and "/foobar" entries, PrefixFilter("/foo") returns
+// "/foo" and "/foo/bar", and discards "/foobar".
func PrefixFilter(prefix string) FilterFunc {
return func(m *Info) (bool, bool) {
- skip := !strings.HasPrefix(m.Mountpoint, prefix)
+ skip := !strings.HasPrefix(m.Mountpoint+"/", prefix+"/")
return skip, false
}
}
diff --git a/vendor/github.com/moby/sys/mountinfo/mountinfo_linux.go b/vendor/github.com/moby/sys/mountinfo/mountinfo_linux.go
index e591c8365..f09a70fa0 100644
--- a/vendor/github.com/moby/sys/mountinfo/mountinfo_linux.go
+++ b/vendor/github.com/moby/sys/mountinfo/mountinfo_linux.go
@@ -12,7 +12,8 @@ import (
// GetMountsFromReader retrieves a list of mounts from the
// reader provided, with an optional filter applied (use nil
// for no filter). This can be useful in tests or benchmarks
-// that provide a fake mountinfo data.
+// that provide fake mountinfo data, or when a source other
+// than /proc/self/mountinfo needs to be read from.
//
// This function is Linux-specific.
func GetMountsFromReader(r io.Reader, filter FilterFunc) ([]*Info, error) {
@@ -133,8 +134,6 @@ func GetMountsFromReader(r io.Reader, filter FilterFunc) ([]*Info, error) {
return out, nil
}
-// Parse /proc/self/mountinfo because comparing Dev and ino does not work from
-// bind mounts
func parseMountTable(filter FilterFunc) ([]*Info, error) {
f, err := os.Open("/proc/self/mountinfo")
if err != nil {