scsi

package
v3.0.0-rc15 Latest Latest
Warning

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

Go to latest
Published: May 22, 2026 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MpathPersistCapability = "node.x.scsi.mpathpersist"
	SGPersistCapability    = "node.x.scsi.sg_persist"
)

Variables

View Source
var (
	DefaultPersistentReservationType = "5" // Write-Exclusive Registrants-Only
	ErrNotSupported                  = errors.New("the SCSI PR is not supported on this node: no usable mpathpersist or sg_persist")
)

Functions

func FormatPRKey

func FormatPRKey(s string) string

FormatPRKey formats a string key by stripping a leading "0x", truncating it to 16 characters if necessary, and padding it with leading zeroes. The formatted key is returned with a "0x" prefix. It is used to format the reservation or registration key read from device and the configured node scsi key.

"0xa"                   -> "0x000000000000000a"
"0xab"                  -> "0x00000000000000ab"
"0x1234567890123456789" -> "0x1234567890123456"
"0x1234567890123456"    -> "0x1234567890123456"

func ListHostDirs

func ListHostDirs() ([]string, error)

func LockedScanAll

func LockedScanAll(timeout time.Duration) error

func ScanAll

func ScanAll() error

func ScanAllBusTargetLun

func ScanAllBusTargetLun(b, t, l string) error

func ScanHostBusTargetLun

func ScanHostBusTargetLun(h, b, t, l string) error

func ScanHostDirBusTargetLun

func ScanHostDirBusTargetLun(h, b, t, l string) error

func ScanSCSIHosts

func ScanSCSIHosts(hba, target, lun string) error

ScanSCSIHosts scans SCSI hosts for new devices hba and target are port names in the SCSI transport (e.g., WWN or iSCSI names) If hba and target are empty, all hosts will be scanned If only hba is provided, all targets on that host(s) will be scanned If hba and target are provided, specific target will be scanned on each host lun specifies the logical unit number to scan

func StripPRKey

func StripPRKey(s string) string

Types

type MpathPersistDriver

type MpathPersistDriver struct {
	Log *plog.Logger
}

func (MpathPersistDriver) Clear

func (t MpathPersistDriver) Clear(dev device.T, key string) error

func (MpathPersistDriver) Preempt

func (t MpathPersistDriver) Preempt(dev device.T, oldKey, newKey string) error

func (MpathPersistDriver) PreemptAbort

func (t MpathPersistDriver) PreemptAbort(dev device.T, oldKey, newKey string) error

func (MpathPersistDriver) ReadRegistrations

func (t MpathPersistDriver) ReadRegistrations(dev device.T) ([]string, error)

func (MpathPersistDriver) ReadReservation

func (t MpathPersistDriver) ReadReservation(dev device.T) (string, error)

func (MpathPersistDriver) Register

func (t MpathPersistDriver) Register(dev device.T, key string) error

func (MpathPersistDriver) Release

func (t MpathPersistDriver) Release(dev device.T, key string) error

func (MpathPersistDriver) Reserve

func (t MpathPersistDriver) Reserve(dev device.T, key string) error

func (MpathPersistDriver) Unregister

func (t MpathPersistDriver) Unregister(dev device.T, key string) error

type PersistentReservationDriver

type PersistentReservationDriver interface {
	ReadRegistrations(dev device.T) ([]string, error)
	Register(dev device.T, key string) error
	Unregister(dev device.T, key string) error
	ReadReservation(dev device.T) (string, error)
	Reserve(dev device.T, key string) error
	Release(dev device.T, key string) error
	Clear(dev device.T, key string) error
	Preempt(dev device.T, oldKey, newKey string) error
	PreemptAbort(dev device.T, oldKey, newKey string) error
}

type PersistentReservationHandle

type PersistentReservationHandle struct {
	Key            string
	Devices        device.L
	NoPreemptAbort bool
	Force          bool
	Log            *plog.Logger
	StatusLogger   statusLogger

	CurrentStatus    PersistentReservationStatus
	CoresourceStatus status.T
	// contains filtered or unexported fields
}

func (*PersistentReservationHandle) DeviceExpectedRegistrationCount

func (t *PersistentReservationHandle) DeviceExpectedRegistrationCount(dev device.T) (int, error)

func (*PersistentReservationHandle) DeviceStatus

func (t *PersistentReservationHandle) DeviceStatus(dev device.T) status.T

func (*PersistentReservationHandle) Start

func (*PersistentReservationHandle) Status

func (t *PersistentReservationHandle) Status() status.T

func (*PersistentReservationHandle) Stop

type PersistentReservationStatus

type PersistentReservationStatus struct {
	ReservedBy *string
}

type SGPersistDriver

type SGPersistDriver struct {
	Log *plog.Logger
}

func (SGPersistDriver) Clear

func (t SGPersistDriver) Clear(dev device.T, key string) error

func (SGPersistDriver) Preempt

func (t SGPersistDriver) Preempt(dev device.T, oldKey, newKey string) error

func (SGPersistDriver) PreemptAbort

func (t SGPersistDriver) PreemptAbort(dev device.T, oldKey, newKey string) error

func (SGPersistDriver) ReadRegistrations

func (t SGPersistDriver) ReadRegistrations(dev device.T) ([]string, error)

ReadRegistrations read the reservation from any operating path

func (SGPersistDriver) ReadReservation

func (t SGPersistDriver) ReadReservation(dev device.T) (string, error)

func (SGPersistDriver) Register

func (t SGPersistDriver) Register(dev device.T, key string) error

func (SGPersistDriver) Release

func (t SGPersistDriver) Release(dev device.T, key string) error

func (SGPersistDriver) Reserve

func (t SGPersistDriver) Reserve(dev device.T, key string) error

func (SGPersistDriver) Unregister

func (t SGPersistDriver) Unregister(dev device.T, key string) error

Jump to

Keyboard shortcuts

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