mirror of
https://git.mirrors.martin98.com/https://github.com/ceph/ceph-csi.git
synced 2025-08-18 09:25:56 +08:00

Several packages are only used while running the e2e suite. These packages are less important to update, as the they can not influence the final executable that is part of the Ceph-CSI container-image. By moving these dependencies out of the main Ceph-CSI go.mod, it is easier to identify if a reported CVE affects Ceph-CSI, or only the testing (like most of the Kubernetes CVEs). Signed-off-by: Niels de Vos <ndevos@ibm.com>
57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
//go:build freebsd || openbsd || darwin
|
|
// +build freebsd openbsd darwin
|
|
|
|
package mountinfo
|
|
|
|
import "golang.org/x/sys/unix"
|
|
|
|
// parseMountTable returns information about mounted filesystems
|
|
func parseMountTable(filter FilterFunc) ([]*Info, error) {
|
|
count, err := unix.Getfsstat(nil, unix.MNT_WAIT)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
entries := make([]unix.Statfs_t, count)
|
|
_, err = unix.Getfsstat(entries, unix.MNT_WAIT)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var out []*Info
|
|
for _, entry := range entries {
|
|
var skip, stop bool
|
|
mountinfo := getMountinfo(&entry)
|
|
|
|
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) {
|
|
path, err := normalizePath(path)
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
// 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)
|
|
}
|