disk

package
v1.2.1 Latest Latest
Warning

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

Go to latest
Published: Mar 28, 2025 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	IOCTL_STORAGE_GET_DEVICE_NUMBER = 0x2D1080
	IOCTL_STORAGE_QUERY_PROPERTY    = 0x002d1400
)
View Source
const (
	StorageDeviceProperty                  StoragePropertyID = 0
	StorageAdapterProperty                                   = 1
	StorageDeviceIDProperty                                  = 2
	StorageDeviceUniqueIDProperty                            = 3
	StorageDeviceWriteCacheProperty                          = 4
	StorageMiniportProperty                                  = 5
	StorageAccessAlignmentProperty                           = 6
	StorageDeviceSeekPenaltyProperty                         = 7
	StorageDeviceTrimProperty                                = 8
	StorageDeviceWriteAggregationProperty                    = 9
	StorageDeviceDeviceTelemetryProperty                     = 10
	StorageDeviceLBProvisioningProperty                      = 11
	StorageDevicePowerProperty                               = 12
	StorageDeviceCopyOffloadProperty                         = 13
	StorageDeviceResiliencyProperty                          = 14
	StorageDeviceMediumProductType                           = 15
	StorageAdapterRpmbProperty                               = 16
	StorageAdapterCryptoProperty                             = 17
	StorageDeviceIoCapabilityProperty                        = 18
	StorageAdapterProtocolSpecificProperty                   = 19
	StorageDeviceProtocolSpecificProperty                    = 20
	StorageAdapterTemperatureProperty                        = 21
	StorageDeviceTemperatureProperty                         = 22
	StorageAdapterPhysicalTopologyProperty                   = 23
	StorageDevicePhysicalTopologyProperty                    = 24
	StorageDeviceAttributesProperty                          = 25
	StorageDeviceManagementStatus                            = 26
	StorageAdapterSerialNumberProperty                       = 27
	StorageDeviceLocationProperty                            = 28
	StorageDeviceNumaProperty                                = 29
	StorageDeviceZonedDeviceProperty                         = 30
	StorageDeviceUnsafeShutdownCount                         = 31
	StorageDeviceEnduranceProperty                           = 32
)
View Source
const (
	StorageIDCodeSetReserved StorageIdentifierCodeSet = 0
	StorageIDCodeSetBinary                            = 1
	StorageIDCodeSetASCII                             = 2
	StorageIDCodeSetUtf8                              = 3
)
View Source
const (
	StorageIdTypeVendorSpecific           StorageIdentifierType = 0
	StorageIDTypeVendorID                                       = 1
	StorageIDTypeEUI64                                          = 2
	StorageIDTypeFCPHName                                       = 3
	StorageIDTypePortRelative                                   = 4
	StorageIDTypeTargetPortGroup                                = 5
	StorageIDTypeLogicalUnitGroup                               = 6
	StorageIDTypeMD5LogicalUnitIdentifier                       = 7
	StorageIDTypeScsiNameString                                 = 8
)
View Source
const (
	StorageIDAssocDevice StorageAssociationType = 0
	StorageIDAssocPort                          = 1
	StorageIDAssocTarget                        = 2
)

Variables

This section is empty.

Functions

This section is empty.

Types

type API

type API interface {
	// ListDiskLocations - constructs a map with the disk number as the key and the DiskLocation structure
	// as the value. The DiskLocation struct has various fields like the Adapter, Bus, Target and LUNID.
	ListDiskLocations() (map[uint32]shared.DiskLocation, error)
	// IsDiskInitialized returns true if the disk identified by `diskNumber` is initialized.
	IsDiskInitialized(diskNumber uint32) (bool, error)
	// InitializeDisk initializes the disk `diskNumber`
	InitializeDisk(diskNumber uint32) error
	// BasicPartitionsExist checks if the disk `diskNumber` has any basic partitions.
	BasicPartitionsExist(diskNumber uint32) (bool, error)
	// CreateBasicPartition creates a partition in disk `diskNumber`
	CreateBasicPartition(diskNumber uint32) error
	// Rescan updates the host storage cache (re-enumerates disk, partition and volume objects)
	Rescan() error
	// GetDiskNumberByName gets a disk number by page83 ID (disk name)
	GetDiskNumberByName(page83ID string) (uint32, error)
	// ListDiskIDs list all disks by disk number.
	ListDiskIDs() (map[uint32]shared.DiskIDs, error)
	// GetDiskStats gets the disk stats of the disk `diskNumber`.
	GetDiskStats(diskNumber uint32) (int64, error)
	// SetDiskState sets the offline/online state of the disk `diskNumber`.
	SetDiskState(diskNumber uint32, isOnline bool) error
	// GetDiskState gets the offline/online state of the disk `diskNumber`.
	GetDiskState(diskNumber uint32) (bool, error)
}

API declares the interface exposed by the internal API

type AdditionalParameters

type AdditionalParameters byte

type DeviceType

type DeviceType uint32

type Disk

type Disk struct {
	Path         string `json:"Path"`
	SerialNumber string `json:"SerialNumber"`
}

type DiskAPI

type DiskAPI struct{}

DiskAPI implements the OS API calls related to Disk Devices. All code here should be very simple pass-through to the OS APIs or cmdlets. Any logic around the APIs/cmdlet invocation should go in internal/server/filesystem/disk.go so that logic can be easily unit-tested without requiring specific OS environments.

func New

func New() DiskAPI

func (DiskAPI) BasicPartitionsExist

func (DiskAPI) BasicPartitionsExist(diskNumber uint32) (bool, error)

func (DiskAPI) CreateBasicPartition

func (DiskAPI) CreateBasicPartition(diskNumber uint32) error

func (DiskAPI) GetDiskNumber

func (DiskAPI) GetDiskNumber(disk syscall.Handle) (uint32, error)

func (DiskAPI) GetDiskNumberAndPage83ID

func (imp DiskAPI) GetDiskNumberAndPage83ID(path string) (uint32, string, error)

func (DiskAPI) GetDiskNumberByName

func (imp DiskAPI) GetDiskNumberByName(page83ID string) (uint32, error)

func (DiskAPI) GetDiskNumberWithID

func (imp DiskAPI) GetDiskNumberWithID(page83ID string) (uint32, error)

func (DiskAPI) GetDiskPage83ID

func (DiskAPI) GetDiskPage83ID(disk syscall.Handle) (string, error)

func (DiskAPI) GetDiskState

func (imp DiskAPI) GetDiskState(diskNumber uint32) (bool, error)

func (DiskAPI) GetDiskStats

func (imp DiskAPI) GetDiskStats(diskNumber uint32) (int64, error)

func (DiskAPI) InitializeDisk

func (DiskAPI) InitializeDisk(diskNumber uint32) error

func (DiskAPI) IsDiskInitialized

func (DiskAPI) IsDiskInitialized(diskNumber uint32) (bool, error)

func (DiskAPI) ListDiskIDs

func (imp DiskAPI) ListDiskIDs() (map[uint32]shared.DiskIDs, error)

ListDiskIDs - constructs a map with the disk number as the key and the DiskID structure as the value. The DiskID struct has a field for the page83 ID.

func (DiskAPI) ListDiskLocations

func (DiskAPI) ListDiskLocations() (map[uint32]shared.DiskLocation, error)

ListDiskLocations - constructs a map with the disk number as the key and the DiskLocation structure as the value. The DiskLocation struct has various fields like the Adapter, Bus, Target and LUNID.

func (DiskAPI) Rescan

func (DiskAPI) Rescan() error

func (DiskAPI) SetDiskState

func (imp DiskAPI) SetDiskState(diskNumber uint32, isOnline bool) error

type StorageAssociationType

type StorageAssociationType uint32

type StorageDeviceIDDescriptor

type StorageDeviceIDDescriptor struct {
	Version             uint32
	Size                uint32
	NumberOfIdentifiers uint32
	Identifiers         [1]byte
}

type StorageDeviceNumber

type StorageDeviceNumber struct {
	DeviceType      DeviceType
	DeviceNumber    uint32
	PartitionNumber uint32
}

type StorageIdentifier

type StorageIdentifier struct {
	CodeSet        StorageIdentifierCodeSet
	Type           StorageIdentifierType
	IdentifierSize uint16
	NextOffset     uint16
	Association    StorageAssociationType
	Identifier     [1]byte
}

type StorageIdentifierCodeSet

type StorageIdentifierCodeSet uint32

type StorageIdentifierType

type StorageIdentifierType uint32

type StoragePropertyID

type StoragePropertyID uint32

type StoragePropertyQuery

type StoragePropertyQuery struct {
	PropertyID StoragePropertyID
	QueryType  StorageQueryType
	Byte       []AdditionalParameters
}

type StorageQueryType

type StorageQueryType uint32
const (
	PropertyStandardQuery StorageQueryType = iota
	PropertyExistsQuery
	PropertyMaskQuery
	PropertyQueryMaxDefined
)

Jump to

Keyboard shortcuts

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