sys

package
v1.2.5 Latest Latest
Warning

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

Go to latest
Published: Feb 19, 2021 License: AGPL-3.0 Imports: 22 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-"
)

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 Format

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

func Mount

func Mount(source, target, fsType string, mountOpts []MountOption, superblockOpts []string) 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(drivePath string, opts []UnmountOption) 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 {
	Major                    uint32      `json:"major"`
	Minor                    uint32      `json:"minor"`
	Devname                  string      `json:"devName,omitempty"`
	Devtype                  string      `json:"devType,omitempty"`
	Partitions               []Partition `json:"partitions,omitempty"`
	BlockInitializationError string      `json:"blockInitializationError"`

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

func FindDevices

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

func (*BlockDevice) GetPartitions

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

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 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"`

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

type FSInfo

type FSInfo struct {
	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 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"`
	DevName           string   `json:"devName,omitempty"`
	PartitionNum      uint     `json:"partitionNum,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"`

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

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

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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