sys

package
v1.4.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 20, 2021 License: AGPL-3.0 Imports: 26 Imported by: 1

Documentation

Index

Constants

View Source
const (
	HostDevRoot      = "/dev"
	DefaultProcFS    = "/proc"
	DirectCSIRoot    = "/var/lib/direct-csi"
	MountRoot        = "/var/lib/direct-csi/mnt"
	DirectCSIDevRoot = "/var/lib/direct-csi/devices"
)
View Source
const (
	MountOptionMSRemount     MountOption = "remount"
	MountOptionMSBind                    = "bind"
	MountOptionMSShared                  = "shared"
	MountOptionMSPrivate                 = "private"
	MountOptionMSSlave                   = "slave"
	MountOptionMSUnBindable              = "unbindable"
	MountOptionMSMove                    = "move"
	MountOptionMSDirSync                 = "dirsync"
	MountOptionMSMandLock                = "mand"
	MountOptionMSNoATime                 = "noatime"
	MountOptionMSNoDev                   = "nodev"
	MountOptionMSNoDirATime              = "nodiratime"
	MountOptionMSNoExec                  = "noexec"
	MountOptionMSNoSUID                  = "nosuid"
	MountOptionMSReadOnly                = "ro"
	MountOptionMSRelatime                = "relatime"
	MountOptionMSRecursive               = "recursive"
	MountOptionMSSilent                  = "silent"
	MountOptionMSStrictATime             = "strictatime"
	MountOptionMSSynchronous             = "sync"
)
View Source
const (
	UnmountOptionForce  UnmountOption = "force"
	UnmountOptionDetach               = "detach"
	UnmountOptionExpire               = "expire"
)
View Source
const (
	None                uint32 = 0x0
	ADFS_SUPER_MAGIC           = 0xadf5
	AFFS_SUPER_MAGIC           = 0xadff
	AFS_SUPER_MAGIC            = 0x5346414f
	ANON_INODE_FS_MAGIC        = 0x09041934 /* Anonymous inode FS (for
	   pseudofiles that have no name;
	   e.g., epoll, signalfd, bpf) */
	AUTOFS_SUPER_MAGIC    = 0x0187
	BDEVFS_MAGIC          = 0x62646576
	BEFS_SUPER_MAGIC      = 0x42465331
	BFS_MAGIC             = 0x1badface
	BINFMTFS_MAGIC        = 0x42494e4d
	BPF_FS_MAGIC          = 0xcafe4a11
	BTRFS_SUPER_MAGIC     = 0x9123683e
	BTRFS_TEST_MAGIC      = 0x73727279
	CGROUP_SUPER_MAGIC    = 0x27e0eb   /* Cgroup pseudo FS */
	CGROUP2_SUPER_MAGIC   = 0x63677270 /* Cgroup v2 pseudo FS */
	CIFS_MAGIC_NUMBER     = 0xff534d42
	CODA_SUPER_MAGIC      = 0x73757245
	COH_SUPER_MAGIC       = 0x012ff7b7
	CRAMFS_MAGIC          = 0x28cd3d45
	DEBUGFS_MAGIC         = 0x64626720
	DEVFS_SUPER_MAGIC     = 0x1373 /* Linux 2.6.17 and earlier */
	DEVPTS_SUPER_MAGIC    = 0x1cd1
	ECRYPTFS_SUPER_MAGIC  = 0xf15f
	EFIVARFS_MAGIC        = 0xde5e81e4
	EFS_SUPER_MAGIC       = 0x00414a53
	EXT_SUPER_MAGIC       = 0x137d /* Linux 2.0 and earlier */
	EXT2_OLD_SUPER_MAGIC  = 0xef51
	EXT2_SUPER_MAGIC      = 0xef53
	EXT3_SUPER_MAGIC      = 0xef53
	EXT4_SUPER_MAGIC      = 0xef53
	F2FS_SUPER_MAGIC      = 0xf2f52010
	FUSE_SUPER_MAGIC      = 0x65735546
	FUTEXFS_SUPER_MAGIC   = 0xbad1dea /* Unused */
	HFS_SUPER_MAGIC       = 0x4244
	HOSTFS_SUPER_MAGIC    = 0x00c0ffee
	HPFS_SUPER_MAGIC      = 0xf995e849
	HUGETLBFS_MAGIC       = 0x958458f6
	ISOFS_SUPER_MAGIC     = 0x9660
	JFFS2_SUPER_MAGIC     = 0x72b6
	JFS_SUPER_MAGIC       = 0x3153464a
	MINIX_SUPER_MAGIC     = 0x137f     /* original minix FS */
	MINIX_SUPER_MAGIC2    = 0x138f     /* 30 char minix FS */
	MINIX2_SUPER_MAGIC    = 0x2468     /* minix V2 FS */
	MINIX2_SUPER_MAGIC2   = 0x2478     /* minix V2 FS, 30 char names */
	MINIX3_SUPER_MAGIC    = 0x4d5a     /* minix V3 FS, 60 char names */
	MQUEUE_MAGIC          = 0x19800202 /* POSIX message queue FS */
	MSDOS_SUPER_MAGIC     = 0x4d44
	MTD_INODE_FS_MAGIC    = 0x11307854
	NCP_SUPER_MAGIC       = 0x564c
	NFS_SUPER_MAGIC       = 0x6969
	NILFS_SUPER_MAGIC     = 0x3434
	NSFS_MAGIC            = 0x6e736673
	NTFS_SB_MAGIC         = 0x5346544e
	OCFS2_SUPER_MAGIC     = 0x7461636f
	OPENPROM_SUPER_MAGIC  = 0x9fa1
	OVERLAYFS_SUPER_MAGIC = 0x794c7630
	PIPEFS_MAGIC          = 0x50495045
	PROC_SUPER_MAGIC      = 0x9fa0 /* /proc FS */
	PSTOREFS_MAGIC        = 0x6165676c
	QNX4_SUPER_MAGIC      = 0x002f
	QNX6_SUPER_MAGIC      = 0x68191122
	RAMFS_MAGIC           = 0x858458f6
	REISERFS_SUPER_MAGIC  = 0x52654973
	ROMFS_MAGIC           = 0x7275
	SECURITYFS_MAGIC      = 0x73636673
	SELINUX_MAGIC         = 0xf97cff8c
	SMACK_MAGIC           = 0x43415d53
	SMB_SUPER_MAGIC       = 0x517b
	SMB2_MAGIC_NUMBER     = 0xfe534d42
	SOCKFS_MAGIC          = 0x534f434b
	SQUASHFS_MAGIC        = 0x73717368
	SYSFS_MAGIC           = 0x62656572
	SYSV2_SUPER_MAGIC     = 0x012ff7b6
	SYSV4_SUPER_MAGIC     = 0x012ff7b5
	TMPFS_MAGIC           = 0x01021994
	TRACEFS_MAGIC         = 0x74726163
	UDF_SUPER_MAGIC       = 0x15013346
	UFS_MAGIC             = 0x00011954
	USBDEVICE_SUPER_MAGIC = 0x9fa2
	V9FS_MAGIC            = 0x01021997
	VXFS_SUPER_MAGIC      = 0xa501fcf5
	XENFS_SUPER_MAGIC     = 0xabba1974
	XENIX_SUPER_MAGIC     = 0x012ff7b4
	XFS_SUPER_MAGIC       = 0x58465342
)

filesystem constants

View Source
const (
	DirectCSIPartitionInfix = "-part-"
	HostPartitionInfix      = "p"
)

Variables

View Source
var (
	ErrNoFS                 = errors.New("no filesystem found")
	ErrNotGPT               = errors.New("Not a GPR partition")
	ErrNotClassicMBR        = errors.New("Not a Classic MBR partition")
	ErrNotModernStandardMBR = errors.New("Not a Modern Standard MBR partition")
	ErrNotAAPMBR            = errors.New("Not a AAP MBR partition")
	ErrNotPartition         = errors.New("Not a partitioned volume")
)

Functions

func EventsCh

func EventsCh(ctx context.Context, c *Conn, maxRetriesOnError int) <-chan Uevent

EventsCh - Returns a channel which emits the uevents from the fd.

func FlushLoopBackReservations added in v1.3.0

func FlushLoopBackReservations() error

func Format

func Format(ctx context.Context, path, fs string, options []string, force bool) (string, error)

func GetDirectCSIPath added in v1.4.0

func GetDirectCSIPath(driveName string) string

func GetMajorMinor added in v1.4.0

func GetMajorMinor(devicePath string) (uint32, uint32, error)

func MakeBlockFile added in v1.4.0

func MakeBlockFile(path string, major, minor uint32) error

func Mount

func Mount(source, target, fsType string, mountOpts []MountOption, superblockOpts []string) error

func ReserveLoopbackDevices added in v1.3.0

func ReserveLoopbackDevices(devCount int) error

func SafeMount

func SafeMount(source, target, fsType string, mountOpts []MountOption, superblockOpts []string) error

func SafeUnmount

func SafeUnmount(target string, opts []UnmountOption) error

func SafeUnmountAll added in v1.1.0

func SafeUnmountAll(path string, opts []UnmountOption) error

func SetXFSUUID added in v1.4.0

func SetXFSUUID(ctx context.Context, uuid, path string) (string, error)

func Unmount

func Unmount(target string, opts []UnmountOption) error

func WatchBlockDevices

func WatchBlockDevices(ctx context.Context) (<-chan BlockDevice, error)

WatchBlockDevices - Watches for hotplugs and devices and returns a channel which emits block devices.

Types

type BlockDevice

type BlockDevice struct {
	Devname     string      `json:"devName,omitempty"`
	Devtype     string      `json:"devType,omitempty"`
	Partitions  []Partition `json:"partitions,omitempty"`
	DeviceError error       `json:"error, omitempty"`

	MasterInfo
	*DriveInfo `json:"driveInfo,omitempty"`
}

func FindDevices

func FindDevices(ctx context.Context, loopBackOnly bool) ([]BlockDevice, error)

func (*BlockDevice) DirectCSIDrivePath added in v1.2.6

func (b *BlockDevice) DirectCSIDrivePath() string

func (*BlockDevice) Error added in v1.2.6

func (b *BlockDevice) Error() string

func (*BlockDevice) GetPartitions

func (b *BlockDevice) GetPartitions() []Partition

func (*BlockDevice) HostDrivePath added in v1.2.6

func (b *BlockDevice) HostDrivePath() string

func (*BlockDevice) TagError added in v1.2.1

func (b *BlockDevice) TagError(err error)

type Conn

type Conn struct {
	// contains filtered or unexported fields
}

Conn wraps the NETLINK fd.

func NewConn

func NewConn() (*Conn, error)

NewConn - Opens a NETLINK socket and binds it to the process.

func (*Conn) Close

func (c *Conn) Close() error

func (*Conn) ReadMsg

func (c *Conn) ReadMsg() (msg []byte, err error)

ReadMsg allow to read an entire uevent msg

type Decoder

type Decoder struct {
	// contains filtered or unexported fields
}

func NewDecoder

func NewDecoder(c *Conn) *Decoder

func (*Decoder) ReadAndDecode

func (d *Decoder) ReadAndDecode() (*Uevent, error)

Decode - Parses the incoming uevent and extracts values

type DefaultDriveFormatter added in v1.3.0

type DefaultDriveFormatter struct{}

func (*DefaultDriveFormatter) FormatDrive added in v1.3.0

func (c *DefaultDriveFormatter) FormatDrive(ctx context.Context, uuid, path string, force bool) error

func (*DefaultDriveFormatter) MakeBlockFile added in v1.4.0

func (c *DefaultDriveFormatter) MakeBlockFile(path string, major, minor uint32) error

type DefaultDriveMounter added in v1.3.0

type DefaultDriveMounter struct{}

func (*DefaultDriveMounter) MountDrive added in v1.3.0

func (c *DefaultDriveMounter) MountDrive(source, target string, mountOpts []string) error

func (*DefaultDriveMounter) UnmountDrive added in v1.3.0

func (c *DefaultDriveMounter) UnmountDrive(path string) error

type DefaultDriveStatter added in v1.3.0

type DefaultDriveStatter struct{}

func (*DefaultDriveStatter) GetFreeCapacityFromStatfs added in v1.3.0

func (c *DefaultDriveStatter) GetFreeCapacityFromStatfs(path string) (int64, error)

type DefaultVolumeMounter added in v1.3.0

type DefaultVolumeMounter struct{}

func (*DefaultVolumeMounter) MountVolume added in v1.3.0

func (c *DefaultVolumeMounter) MountVolume(ctx context.Context, src, dest string, readOnly bool) error

func (*DefaultVolumeMounter) UnmountVolume added in v1.3.0

func (c *DefaultVolumeMounter) UnmountVolume(targetPath string) error

type DriveFormatter added in v1.3.0

type DriveFormatter interface {
	FormatDrive(ctx context.Context, uuid, path string, force bool) error
	MakeBlockFile(path string, major, minor uint32) error
}

type DriveInfo

type DriveInfo struct {
	NumBlocks         uint64 `json:"numBlocks,omitempty"`
	StartBlock        uint64 `json:"startBlock,omitempty"`
	EndBlock          uint64 `json:"endBlock,omitempty"`
	TotalCapacity     uint64 `json:"totalCapacity,omitempty"`
	LogicalBlockSize  uint64 `json:"logicalBlockSize,omitempty"`
	PhysicalBlockSize uint64 `json:"physicalBlockSize,omitempty"`
	Path              string `json:"path,omitempty"`
	Major             uint32 `json:"major,omitempty"`
	Minor             uint32 `json:"minor",omitempty`
	SerialNumber      string `json:"serialNumber",omitempty`

	*FSInfo `json:"fsInfo,omitempty"`
}

type DriveMounter added in v1.3.0

type DriveMounter interface {
	MountDrive(source, target string, mountOpts []string) error
	UnmountDrive(path string) error
}

type DriveStatter added in v1.3.0

type DriveStatter interface {
	GetFreeCapacityFromStatfs(path string) (freeCapacity int64, err error)
}

type FSInfo

type FSInfo struct {
	UUID          string      `json:"uuid,omitempty"`
	FSType        string      `json:"fsType,omitempty"`
	TotalCapacity uint64      `json:"totalCapacity,omitempty"`
	FreeCapacity  uint64      `json:"freeCapacity,omitempty"`
	FSBlockSize   uint64      `json:"fsBlockSize,omitempty"`
	Mounts        []MountInfo `json:"mounts,omitempty"`
}

type FSType

type FSType string
const (
	FSTypeXFS  FSType = "xfs"
	FSTypeEXT4        = "ext4"
)

type MasterInfo added in v1.3.6

type MasterInfo struct {
	DMName string `json:"dmName,omitempty"`
	DMUUID string `json:"dmUUID,omitempty"`
	Parent string `json:"parent,omitempty"`
	Master string `json:"master,omitempty"`
}

type MountInfo

type MountInfo struct {
	Mountpoint        string   `json:"mountPoint,omitempty"`
	MountFlags        []string `json:"mountFlags,omitempty"`
	MountRoot         string   `json:"mountRoot,omitempty"`
	MountID           uint32   `json:"mountID,omitempty"`
	ParentID          uint32   `json:"parentID,omitempty"`
	MountSource       string   `json:"mountSource,omitempty"`
	SuperblockOptions []string `json:"superblockOptions,omitempty"`
	FSType            string   `json:"fsType,omitempty"`
	OptionalFields    []string `json:"optionalFields,omitempty"`
	Major             uint32   `json:"major,omitempty"`
	Minor             uint32   `json:"minor,omitempty"`
}

func ProbeMountInfo

func ProbeMountInfo() ([]MountInfo, error)

ProbeMountInfo - fetches the list of mounted filesystems on particular node

type MountOption

type MountOption string

Mount options

type Partition

type Partition struct {
	PartitionNum  uint32 `json:"partitionNum,omitempty"`
	Type          string `json:"partitionType,omitempty"`
	TypeUUID      string `json:"partitionTypeUUID,omitempty"`
	PartitionGUID string `json:"partitionGUID,omitempty"`
	DiskGUID      string `json:"diskGUID,omitempty"`

	MasterInfo
	*DriveInfo `json:"driveInfo,omitempty"`
}

type SuperBlock added in v1.4.0

type SuperBlock interface {
	Is() bool
}

type Uevent

type Uevent struct {
	Header    string
	Action    string
	Devpath   string
	Subsystem string
	Seqnum    string
	Vars      map[string]string
}

Uevent from Netlink

func ParseUEvent

func ParseUEvent(raw []byte) (e *Uevent, err error)

type UnmountOption

type UnmountOption string

Unmount options

type VolumeMounter added in v1.3.0

type VolumeMounter interface {
	MountVolume(ctx context.Context, src, dest string, readOnly bool) error
	UnmountVolume(targetPath string) error
}

Directories

Path Synopsis
fs
xfs

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL