mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
![Sebastiaan van Stijn](/assets/img/avatar_default.png)
full diff: https://github.com/moby/sys/compare/mountinfo/v0.1.3...mountinfo/v0.4.0 > Note that this dependency uses submodules, providing "github.com/moby/sys/mount" > and "github.com/moby/sys/mountinfo". Our vendoring tool (vndr) currently doesn't > support submodules, so we vendor the top-level moby/sys repository (which contains > both) and pick the most recent tag, which could be either `mountinfo/vXXX` or > `mount/vXXX`. github.com/moby/sys/mountinfo v0.4.0 -------------------------------------------------------------------------------- Breaking changes: - `PidMountInfo` is now deprecated and will be removed before v1.0; users should switch to `GetMountsFromReader` Fixes and improvements: - run filter after all fields are parsed - correct handling errors from bufio.Scan - documentation formatting fixes github.com/moby/sys/mountinfo v0.3.1 -------------------------------------------------------------------------------- - mount: use MNT_* flags from golang.org/x/sys/unix on freebsd - various godoc and CI fixes - mountinfo: make GetMountinfoFromReader Linux-specific - Add support for OpenBSD in addition to FreeBSD - mountinfo: use idiomatic naming for fields github.com/moby/sys/mountinfo v0.2.0 -------------------------------------------------------------------------------- Bug fixes: - Fix path unescaping for paths with double quotes Improvements: - Mounted: speed up by adding fast paths using openat2 (Linux-only) and stat - Mounted: relax path requirements (allow relative, non-cleaned paths, symlinks) - Unescape fstype and source fields - Documentation improvements Testing/CI: - Unit tests: exclude darwin - CI: run tests under Fedora 32 to test openat2 - TestGetMounts: fix for Ubuntu build system - Makefile: fix ignoring test failures - CI: add cross build github.com/moby/sys/mount v0.1.1 -------------------------------------------------------------------------------- https://github.com/moby/sys/releases/tag/mount%2Fv0.1.1 Improvements: - RecursiveUnmount: add a fast path (#26) - Unmount: improve doc - fix CI linter warning on Windows Testing/CI: - Unit tests: exclude darwin - Makefile: fix ignoring test failures - CI: add cross build Signed-off-by: Sebastiaan van Stijn <github@gone.nl> Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
67 lines
1.4 KiB
Go
67 lines
1.4 KiB
Go
// +build freebsd,cgo openbsd,cgo
|
|
|
|
package mountinfo
|
|
|
|
/*
|
|
#include <sys/param.h>
|
|
#include <sys/ucred.h>
|
|
#include <sys/mount.h>
|
|
*/
|
|
import "C"
|
|
|
|
import (
|
|
"fmt"
|
|
"reflect"
|
|
"unsafe"
|
|
)
|
|
|
|
// parseMountTable returns information about mounted filesystems
|
|
func parseMountTable(filter FilterFunc) ([]*Info, error) {
|
|
var rawEntries *C.struct_statfs
|
|
|
|
count := int(C.getmntinfo(&rawEntries, C.MNT_WAIT))
|
|
if count == 0 {
|
|
return nil, fmt.Errorf("Failed to call getmntinfo")
|
|
}
|
|
|
|
var entries []C.struct_statfs
|
|
header := (*reflect.SliceHeader)(unsafe.Pointer(&entries))
|
|
header.Cap = count
|
|
header.Len = count
|
|
header.Data = uintptr(unsafe.Pointer(rawEntries))
|
|
|
|
var out []*Info
|
|
for _, entry := range entries {
|
|
var mountinfo Info
|
|
var skip, stop bool
|
|
mountinfo.Mountpoint = C.GoString(&entry.f_mntonname[0])
|
|
mountinfo.FSType = C.GoString(&entry.f_fstypename[0])
|
|
mountinfo.Source = C.GoString(&entry.f_mntfromname[0])
|
|
|
|
if filter != nil {
|
|
// filter out entries we're not interested in
|
|
skip, stop = filter(&mountinfo)
|
|
if skip {
|
|
continue
|
|
}
|
|
}
|
|
|
|
out = append(out, &mountinfo)
|
|
if stop {
|
|
break
|
|
}
|
|
}
|
|
return out, nil
|
|
}
|
|
|
|
func mounted(path string) (bool, error) {
|
|
// Fast path: compare st.st_dev fields.
|
|
// This should always work for FreeBSD and OpenBSD.
|
|
mounted, err := mountedByStat(path)
|
|
if err == nil {
|
|
return mounted, nil
|
|
}
|
|
|
|
// Fallback to parsing mountinfo
|
|
return mountedByMountinfo(path)
|
|
}
|