Documentation
¶
Index ¶
- Constants
- Variables
- func DeviceList(r string) ([]string, error)
- type AdminCmd
- type AdminCommandOpCode
- type CommandError
- type CtrlCaps
- type CtrlList
- type Device
- func (dev *Device) AttachNamespace(namespaceID uint32, controllers []uint16) error
- func (dev *Device) Close()
- func (dev *Device) CreateNamespace(size uint64, capacity uint64, format uint8, dps uint8, sharing uint8, ...) (uint32, error)
- func (dev *Device) DeleteNamespace(namespaceID uint32) error
- func (dev *Device) DetachNamespace(namespaceID uint32, controllers []uint16) error
- func (dev *Device) FormatNamespace(namespaceID uint32) error
- func (dev *Device) GetFeature(nsid uint32, fid Feature, sel int, cdw11 uint32, len uint32, buf []byte) error
- func (dev *Device) GetSmartLog() (*SmartLog, error)
- func (dev *Device) Identify(namespaceId uint32, cns IdentifyControllerOrNamespaceType, data []byte) error
- func (dev *Device) IdentifyController() (*IdCtrl, error)
- func (dev *Device) IdentifyNamespace(namespaceId uint32, present bool) (*IdNs, error)
- func (dev *Device) IdentifyNamespaceControllerList(namespaceId uint32) (*CtrlList, error)
- func (dev *Device) IdentifyNamespaceList(namespaceId uint32, all bool) ([1024]NamespaceIdentifier, error)
- func (dev *Device) IdentifyPrimaryControllerCapabilities(controllerId uint16) (*CtrlCaps, error)
- func (dev *Device) IdentifyRaw(namespaceId uint32, cdw10 uint32, cdw11 uint32, data []byte) error
- func (dev *Device) ListSecondary(startingCtrlId uint32, namespaceId uint32) (*SecondaryControllerList, error)
- func (dev *Device) SetFeature(nsid uint32, fid Feature, cdw12 uint32, save bool, len uint32, buf []byte) error
- func (dev *Device) String() string
- func (dev *Device) VirtualMgmt(ctrlId uint16, action VirtualManagementAction, ...) error
- type Feature
- type FormatNs
- type FormattedLBASize
- type HostMetadataElementType
- type IdCtrl
- type IdNs
- type IdentifyControllerOrNamespaceType
- type MIHostMetadata
- type MIHostMetadataElementDescriptor
- type MiMeatadataFeatureBuilder
- type NamespaceCapabilities
- type NamespaceGloballyUniqueIdentifier
- type NamespaceIdentifier
- type OptionalControllerCapabilities
- type PassthruCmd
- type SanitizeCapabilities
- type SecondaryControllerEntry
- type SecondaryControllerList
- type SmartLog
- type StatusCode
- type SwitchtecNvmeCommandError
- type UserIoCmd
- type VirtualManagementAction
- type VirtualManagementResourceType
Constants ¶
const ( StatusCodeMask = 0x7FF CommandRetryDelayMask = 0x1800 CommandRetryDelayShift = 11 MoreMask = 0x2000 DoNotRetryMask = 0x4000 )
Constants applying to the StatusCode
const ( SecuritySendReceiveCapabilities OptionalControllerCapabilities = (1 << 0) FormatNVMCommandSupport = (1 << 1) FirmwareCommitImageDownload = (1 << 2) NamespaceManagementCapability = (1 << 3) DeviceSelfTestCommand = (1 << 4) DirectivesSupport = (1 << 5) NVMeMISendReceiveSupport = (1 << 6) VirtualiztionManagementSupport = (1 << 7) DoorbellBufferConfigCommand = (1 << 8) GetLBAStatusCapability = (1 << 9) )
const ( NoneFeature Feature = 0x00 ArbitrationFeature = 0x01 PowerManagmentFeature = 0x02 LBARangeFeature = 0x03 TemperatureThresholdFeature = 0x04 ErrorRecoveryFeature = 0x05 VolatileWriteCacheFeature = 0x06 NumQueuesFeature = 0x07 IRQCoalesceFeature = 0x08 IRQConfigFeature = 0x09 WriteAtomicFeature = 0x0a AsyncEventFeature = 0x0b AutoPSTFeature = 0x0c HostMemoryBufferFeature = 0x0d TimestampFeature = 0x0e KATOFeature = 0x0f HCTMFeature = 0x10 NoPSCFeature = 0x11 RRLFeature = 0x12 PLMConfigFeature = 0x13 PLMWindowFeature = 0x14 LBAStatusInfoFeature = 0x15 HostBehaviorFeature = 0x16 SanitizeFeature = 0x17 EnduranceFeature = 0x18 IOCSProfileFeature = 0x19 SWProgressFeature = 0x80 HostIDFeature = 0x81 ReservationMaskFeature = 0x82 ReservationPersistentFeature = 0x83 WriteProtectFeature = 0x84 MiControllerMetadata = 0x7E MiNamespaceMetadata = 0x7F )
const ( OsCtrlNameElementType HostMetadataElementType = 0x01 OsDriverNameElementType = 0x02 OsDriverVersionElementType = 0x03 PreBootCtrlNameElementType = 0x04 PreBootDriverNameElementType = 0x05 PreBootDriverVersionElementType = 0x06 OsNamespaceNameElementType HostMetadataElementType = 0x01 PreBootNamespaceNameElementType = 0x02 )
Metadata constants
const ( LogCdw10LogPageIdentiferMask = 0xFF LogCdw10LogPageIdentiferShift = 0 LogCdw10LogSpecificFieldMask = 0x0f LogCdw10LogSpecificFieldShift = 8 LogCdw10RetainAsynchronousEventMask = 0x1 LogCdw10RetainAsynchronousEventShift = 15 LogCdw10NumberOfDwordsLowerMask = 0xFFFF LogCdw10NumberOfDwordsLowerShift = 16 LogCdw11NumberOfDwordsUpperMask = 0xFFFF LogCdw11NumberOfDwordsUpperShift = 0 LogCdw11LogSpecificIdentifierMask = 0xFF LogCdw11LogSpecificIdentifierShift = 16 LogCdw14UuidMask = 0x7F LogCdw14UuidShift = 0 )
const (
IdentifyDataSize uint32 = 4096
)
Variables ¶
var FeatureBufferLength = [256]uint32{ LBARangeFeature: 4096, AutoPSTFeature: 256, HostMemoryBufferFeature: 256, TimestampFeature: 8, PLMConfigFeature: 512, HostBehaviorFeature: 512, HostIDFeature: 8, MiControllerMetadata: 4096, MiNamespaceMetadata: 4096, }
var ( VirtualManagementResourceTypeName = map[VirtualManagementResourceType]string{ VQResourceType: "VQ", VIResourceType: "VI", } )
Functions ¶
func DeviceList ¶
DeviceList returns the devices that match the provided regexp in Model Number, Serial Number, or Node Qualifying Name (NQN). Returned paths are of the form /dev/nvme[0-9]+.
Types ¶
type AdminCommandOpCode ¶
type AdminCommandOpCode uint8
AdminCommandOpCode sizes the opcodes listed below
const ( GetLogPage AdminCommandOpCode = 0x02 IdentifyOpCode AdminCommandOpCode = 0x06 SetFeatures AdminCommandOpCode = 0x09 GetFeatures AdminCommandOpCode = 0x0A NamespaceManagementOpCode AdminCommandOpCode = 0x0D NamespaceAttachOpCode AdminCommandOpCode = 0x15 VirtualMgmtOpCode AdminCommandOpCode = 0x1c NvmeMiSend AdminCommandOpCode = 0x1D NvmeMiRecv AdminCommandOpCode = 0x1E FormatNvmOpCode AdminCommandOpCode = 0x80 )
Admin Command Op Codes. These are from the NVMe Specification
func (AdminCommandOpCode) String ¶
func (code AdminCommandOpCode) String() string
type CommandError ¶
type CommandError struct { StatusCode StatusCode CommandRetryDelay uint8 More bool DoNotRetry bool }
CommandError captures an error and details about handling
func (*CommandError) Error ¶
func (e *CommandError) Error() string
type CtrlCaps ¶
type CtrlCaps struct { ControllerId uint16 // CNTLID PortId uint16 // PORTID ControllerResourceType uint8 // CRT Reserved5 [27]uint8 VQResourcesFlexibleTotal uint32 // VQFRT VQResourcesFlexibleAssigned uint32 // VQRFA VQResourcesFlexibleAllocatedToPrimary uint16 // VQRFAP VQResourcesPrivateTotal uint16 // VQPRT VQResourcesFlexibleSecondaryMaximum uint16 // VQFRSM VQFlexibleResourcePreferredGranularity uint16 // VQGRAN Reserved48 [16]uint8 VIResourcesFlexibleTotal uint32 // VIFRT VIResourcesFlexibleAssigned uint32 // VIRFA VIResourcesFlexibleAllocatedToPrimary uint16 // VIRFAP VIResourcesPrivateTotal uint16 // VIPRT VIResourcesFlexibleSecondaryMaximum uint16 // VIFRSM VIFlexibleResourcePreferredGranularity uint16 // VIGRAN Reserved90 [4016]uint8 }
type Device ¶
type Device struct { Path string // contains filtered or unexported fields }
Device describes the NVMe Device and its attributes
func Open ¶
Open establishes a connection with the switchtec switch to which subsequent commands are issued.
func (*Device) AttachNamespace ¶
func (*Device) CreateNamespace ¶
func (dev *Device) CreateNamespace(size uint64, capacity uint64, format uint8, dps uint8, sharing uint8, anagrpid uint32, nvmsetid uint16, timeout uint32) (uint32, error)
CreateNamespace creates a new namespace with the specified parameters
func (*Device) DeleteNamespace ¶
DeleteNamespace deletes the specified namespace
func (*Device) DetachNamespace ¶
func (*Device) FormatNamespace ¶
FormatNamespace issues a suitable format command to the namespace. The existing format is queried and reused, and if crypto erase is supported we chose that.
func (*Device) GetFeature ¶
func (*Device) GetSmartLog ¶
func (*Device) Identify ¶
func (dev *Device) Identify(namespaceId uint32, cns IdentifyControllerOrNamespaceType, data []byte) error
Identify -
func (*Device) IdentifyController ¶
IdentifyController -
func (*Device) IdentifyNamespace ¶
IdentifyNamespace -
func (*Device) IdentifyNamespaceControllerList ¶
IdentifyNamespaceControllerList - Identifies the list of controllers attached to the provided namespace
func (*Device) IdentifyNamespaceList ¶
func (dev *Device) IdentifyNamespaceList(namespaceId uint32, all bool) ([1024]NamespaceIdentifier, error)
IdentifyNamespaceList -
func (*Device) IdentifyPrimaryControllerCapabilities ¶
func (*Device) IdentifyRaw ¶
IdentifyRaw -
func (*Device) ListSecondary ¶
func (dev *Device) ListSecondary(startingCtrlId uint32, namespaceId uint32) (*SecondaryControllerList, error)
ListSecondary retries the secondary controller list associated with the primary controller of the given device. This differs from the C implementation in that num-entries is not an option. The maximum number of entries is always returned. It is up to the caller to trim down the response.
func (*Device) SetFeature ¶
func (*Device) VirtualMgmt ¶
func (dev *Device) VirtualMgmt(ctrlId uint16, action VirtualManagementAction, resourceType VirtualManagementResourceType, numResources uint32) error
type FormatNs ¶
type FormatNs struct { Format uint8 `bitfield:"4"` // Bits 3:0 Indicate one of the 16 supported LBA Formats MetadataSetting uint8 `bitfield:"1"` // Bits 4 Indicates metadata transfer setting. If the Metadata size is 0, the bit is N/A ProtectionInfo uint8 `bitfield:"3"` // Bits 7:5 Indicates end-to-end protection information type ProtectionInfoLocation uint8 `bitfield:"1"` // Bits 8 Indicates protection information location in the metadata SecureEraseSetting uint8 `bitfield:"3"` // Bits 11-9 Indicates secure erase setting, 0 - none, 1 - user data erase, 2 - crypto-erase Fill uint8 `bitfield:"4"` // Filler to pad to byte Unused [2]uint8 // Pad to uint32 }
Format Options Data Structure All the parameters listed are the long-form name structex annotations where applicable.
type FormattedLBASize ¶
type HostMetadataElementType ¶
type HostMetadataElementType uint8
HostMetadataElementType constains the constants below
type IdCtrl ¶
type IdCtrl id_ctrl
func (*IdCtrl) GetCapability ¶
func (id *IdCtrl) GetCapability(cap OptionalControllerCapabilities) bool
GetCapability -
type IdNs ¶
type IdNs struct { Size uint64 // NSZE Capacity uint64 // NCAP Utilization uint64 // NUSE Features struct { Thinp uint8 `bitfield:"1"` // Bit 0: Thin provisioning supported for this namespace Nsabp uint8 `bitfield:"1"` // Bit 1: NAWUN, NAWUPF, NACWU are defined for this namespace (TODO: Wtf is this?) Dae uint8 `bitfield:"1"` // Bit 2: Deallocated or Unwritten Logical Block error support for this namespace Uidreuse uint8 `bitfield:"1"` // Bit 3: NGUID field for this namespace, if non-zero, is never reused by the controller. OptPerf uint8 `bitfield:"1"` // Bit 4: If 1, indicates NPWG, NPWA, NPDG, NPDA, NOWS are defined for this namespace and should be used for host I/O optimization. Reserved uint8 `bitfield:"3"` // Bits 7:5 are reserved } // NSFEAT NumberOfLBAFormats uint8 // NLBAF FormattedLBASize FormattedLBASize // FLABS MetadataCapabilities struct { ExtendedSupport uint8 `bitfield:"1"` // Bit 0: If 1, indicates support metadata transfer as part of extended data LBA PointerSupport uint8 `bitfield:"1"` // Bit 1: If 1, indicates support for metadata transfer in a separate buffer specified by Metadata Pointer in SQE Reserved uint8 `bitfield:"6"` // Bits 7:2 are reserved } // MC EndToEndDataProtectionCaps uint8 // DPC EndToEndDataProtectionTypeSettings uint8 // DPS MultiPathIOSharingCapabilities NamespaceCapabilities // NMIC ReservationCapabilities struct { PersistThroughPowerLoss uint8 `bitfield:"1"` // Bit 0: If 1 indicates namespace supports the Persist Through Power Loss capability WriteExclusiveReservation uint8 `bitfield:"1"` // Bit 1: If 1 indicates namespace supports the Write Exclusive reservation type ExclusiveAccessReservation uint8 `bitfield:"1"` // Bit 2: If 1 indicates namespace supports Exclusive Access reservation type WriteExclusiveRegistrantsOnly uint8 `bitfield:"1"` // Bit 3: ExclusiveAccessRegistrantsOnly uint8 `bitfield:"1"` // Bit 4: WriteExclusiveAllRegistrants uint8 `bitfield:"1"` // Bit 5: ExclusiveAllRegistrants uint8 `bitfield:"1"` // Bit 6: IgnoreExistingKey uint8 `bitfield:"1"` // Bit 7: If 1 indicates that the Ingore Existing Key is used as defined in 1.3 or later specification. If 0, 1.2.1 or earlier definition } // RESCAP FormatProgressIndicator struct { PercentageRemaining uint8 `bitfield:"7"` // Bits 6:0 indicates percentage of the Format NVM command that remains completed. If bit 7 is set to '1' then a value of 0 indicates the namespace is formatted with FLBAs and DPS fields and no format is in progress FormatProgressSupport uint8 `bitfield:"1"` // Bit 7 if 1 indicates the namespace supports the Format Progress Indicator field } // FPI DeallocateLogiclBlockFeatures uint8 // DLFEAT AtomicWriteUnitNormal uint16 // NAWUN AtomicWriteUnitPowerFail uint16 // NAWUPF AtomicCompareAndWriteUnit uint16 // NACWU AtomicBoundarySizeNormal uint16 // NABSN AtomicBoundaryOffset uint16 // NABO AtomicBoundarySizePowerFail uint16 // NABSPF OptimalIOBoundary uint16 // NOIOB NVMCapacity [16]uint8 // NVMCAP Total size of the NVM allocated to this namespace, in bytes. PreferredWriteGranularity uint16 // NPWG PreferredWriteAlignment uint16 // NPWA PreferredDeallocateGranularity uint16 // NPDG PreferredDeallocateAlignment uint16 // NPDA OptimalWriteSize uint16 // NOWS The size in logical block for optimal write performance for this namespace. Should be a multiple of NPWG. Refer to 8.25 for details Reserved74 [18]uint8 AnaGroupIdentifier uint32 // ANAGRPID indicates the ANA Group Identifier for thsi ANA group (refer to section 8.20.2) of which the namespace is a member. Reserved96 [3]uint8 Attributes struct { WriteProtected uint8 `bitfield:"1"` // Bit 0: indicates namespace is currently write protected due to any error condition Reserved uint8 `bitfield:"7"` // Bits 7:1 are reserved } // NSATTR NvmSetIdentifier uint16 // NVMSETID EnduranceGroupIdentifier uint16 // ENDGID GloballyUniqueIdentifier NamespaceGloballyUniqueIdentifier // NGUID IeeeExtendedUniqueIdentifier [8]uint8 // EUI64 LBAFormats [16]struct { MetadataSize uint16 // MS LBADataSize uint8 // LBADS Indicates the LBA data size supported in terms of a power-of-two value. If the value is 0, the the LBA format is not supported RelativePerformance uint8 // RP indicates the relative performance of this LBA format relative to other LBA formats } Reserved192 [192]uint8 VendorSpecific [3712]uint8 }
Identify Namespace Data Structure Figure 247 from NVM-Express 1_4a-2020.03.09-Ratified specification
All the parameters listed are the long-form name with the 'Namespace' prefix dropped, if it exists. structex annotations where applicable.
type IdentifyControllerOrNamespaceType ¶
type IdentifyControllerOrNamespaceType int // CNS
IdentifyControllerOrNamespaceType constrains the type for the constants below.
const ( Namespace_CNS IdentifyControllerOrNamespaceType = 0x00 Controller_CNS IdentifyControllerOrNamespaceType = 0x01 NamespaceList_CNS IdentifyControllerOrNamespaceType = 0x02 NamespaceDescriptorList_CNS IdentifyControllerOrNamespaceType = 0x03 NVMSetList_CNS IdentifyControllerOrNamespaceType = 0x04 NamespacePresentList_CNS IdentifyControllerOrNamespaceType = 0x10 NamespacePresent_CNS IdentifyControllerOrNamespaceType = 0x11 ControllerNamespaceList_CNS IdentifyControllerOrNamespaceType = 0x12 ControllerList_CNS IdentifyControllerOrNamespaceType = 0x13 PrimaryControllerCapabilities_CNS IdentifyControllerOrNamespaceType = 0x14 SecondaryControllerList_CNS IdentifyControllerOrNamespaceType = 0x15 NamespaceGranularityList_CNS IdentifyControllerOrNamespaceType = 0x16 UUIDList_CNS IdentifyControllerOrNamespaceType = 0x17 )
CNS constants
type MIHostMetadata ¶
type MiMeatadataFeatureBuilder ¶
type MiMeatadataFeatureBuilder struct {
// contains filtered or unexported fields
}
func NewMiFeatureBuilder ¶
func NewMiFeatureBuilder() *MiMeatadataFeatureBuilder
func (*MiMeatadataFeatureBuilder) AddElement ¶
func (builder *MiMeatadataFeatureBuilder) AddElement(typ uint8, rev uint8, data []byte) *MiMeatadataFeatureBuilder
func (*MiMeatadataFeatureBuilder) Bytes ¶
func (builder *MiMeatadataFeatureBuilder) Bytes() []byte
type NamespaceCapabilities ¶
type NamespaceGloballyUniqueIdentifier ¶
type NamespaceGloballyUniqueIdentifier [16]byte
NamespaceGloballyUniqueIdentifier uniquely identifies the namespace
func (*NamespaceGloballyUniqueIdentifier) Parse ¶
func (a *NamespaceGloballyUniqueIdentifier) Parse(s string)
Parse - ensure the uuid is parseable
func (NamespaceGloballyUniqueIdentifier) String ¶
func (a NamespaceGloballyUniqueIdentifier) String() string
type NamespaceIdentifier ¶
type NamespaceIdentifier uint32
const ( // COMMON_NAMESPACE_IDENTIFIER identifies the capabilities and settings that are common to all namespaces // in the Identify Namespace data structure COMMON_NAMESPACE_IDENTIFIER NamespaceIdentifier = 0xFFFFFFFF )
type OptionalControllerCapabilities ¶
type OptionalControllerCapabilities uint16
type PassthruCmd ¶
type PassthruCmd struct { Opcode uint8 // Byte 0 Flags uint8 // Byte 1 Reserved1 uint16 // Bytes 2-3 NSID uint32 // Bytes 4-7 Cdw2 uint32 // Bytes 8-11 Cdw3 uint32 // Bytes 12-15 Metadata uint64 // Bytes 16-23 Addr uint64 // Bytes 24-31 MetadataLen uint32 // Bytes 32-35 DataLen uint32 // Bytes 36-39 Cdw10 uint32 // Bytes 40-43 Cdw11 uint32 // Bytes 44-47 Cdw12 uint32 // Bytes 48-51 Cdw13 uint32 // Bytes 52-55 Cdw14 uint32 // Bytes 56-60 Cdw15 uint32 // Bytes 60-63 TimeoutMs uint32 // Bytes 64-67 Result uint32 // Bytes 68-71 }
PassthruCmd is used for NVMe Passthrough from user space to the NVMe Device Driver This is a copy of the C definition in 'include/linux/nvme_ioctl.h' struct nvme_passthru_cmd{}
type SanitizeCapabilities ¶
type SanitizeCapabilities struct { CryptoErase uint8 `bitfield:"1"` // Bits 0 controller supports Crypto Erase sanitize operation (1), 0 - no support BlockErase uint8 `bitfield:"1"` // Bits 1 controller supports Block Erase sanitize operation (1), 0 - no support Overwrite uint8 `bitfield:"1"` // Bits 2 controller supports Overwrite sanitize operation (1), 0 - no support Unused0 uint8 `bitfield:"5"` // Bits 7:3 unused Unused1 uint16 // Bits 23:8 unused Unused2 uint8 `bitfield:"5"` // Bits 28:24 unused NoDeallocateAfterSanitize uint8 `bitfield:"1"` // Bits 29 No-deallocate After Sanitize bit in Sanitize inhibitied command support (1), 0 - no support NoDeallocateMask uint8 `bitfield:"2"` // Bits 31:30 No-deallocate After Sanitize mask to extract value. }
SanitizeCapabilities data structure structex annotations where applicable.
type SecondaryControllerList ¶
type SecondaryControllerList struct { Count uint8 `countOf:"Entries"` Reserved [31]uint8 Entries [127]SecondaryControllerEntry }
type SmartLog ¶
type SmartLog struct { CriticalWarning struct { SpareCapacity uint8 `bitfield:"1"` // Bit 0: If set to ‘1’, then the available spare capacity has fallen below the threshold. Temperature uint8 `bitfield:"1"` // Bit 1: If set to ‘1’, then a temperature is: a) greater than or equal to an over temerature threshold; or b) less than or equal to an under temperature threshold Degraded uint8 `bitfield:"1"` // Bit 2: If set to ‘1’, then the NVM subsystem reliability has been degraded due to significant media related errors or any internal error that degrades NVM subsystem reliability. ReadOnly uint8 `bitfield:"1"` // Bit 3: If set to ‘1’, then the media has been placed in read only mode. BackupFailed uint8 `bitfield:"1"` // Bit 4: If set to ‘1’, then the volatile memory backup device has failed. PersistentMemoryRegionReadOnly uint8 `bitfield:"1"` // If set to ‘1’, then the Persistent Memory Region has become read-only or unreliable Reserved uint8 `bitfield:"2"` } CompositeTemperature uint16 // Contains a value corresponding to a temperature in degrees Kelvin that represents the current composite temperature of the controller and namespace(s) associated with that controller. AvailableSpare uint8 // Contains a normalized percentage (0% to 100%) of the remaining spare capacity available. AvailableSpareThreshold uint8 // When the Available Spare falls below the threshold indicated in this field, an asynchronous event completion may occur. The value is indicated as a normalized percentage (0% to 100%). The values 101 to 255 are reserved. PercentageUsed uint8 // Contains a vendor specific estimate of the percentage of NVM subsystem life used based on the actual usage and the manufacturer’s prediction of NVM life. EnduranceGroupCriticalWarningSummary uint8 // This field indicates critical warnings for the state of Endurance Groups. Reserved7 [25]uint8 DataUnitsReadLo uint64 DataUnitsReadHi uint64 DataUnitsWrittenLo uint64 DataUnitsWrittenHi uint64 HostReadsLo uint64 HistReadsHi uint64 HostWritesLo uint64 HostWritesHi uint64 ControllerBusyTimeLo uint64 ControllerBusyTimeHi uint64 PowerCyclesLo uint64 PowerCyclesHi uint64 PowerOnHoursLo uint64 PowerOnHoursHi uint64 UnsafeShutdownsLo uint64 UnsafeShutdownsHi uint64 MediaErrorsLo uint64 MediaErrorsHi uint64 NumberErrorLogEntriesLo uint64 NumberErrorLogEntriesHi uint64 WarningCompositeTemperatureTime uint32 CriticalCompositeTemperatureTime uint32 TemperatureSensor [8]uint16 ThermalManagementTemperature1TransitionCount uint32 ThermalManagementTemperature2TransitionCount uint32 TotalTimeForThermalManagementTemperature1 uint32 TotalTimeForThermalManagementTemperature2 uint32 Reserved232 [280]uint8 }
SmartLog health information Get Log Page - SMART / Health Information Log Figure 196 from NVM-Express 1_4a-2020.03.09-Ratified specification
type StatusCode ¶
type StatusCode uint32
StatusCode sizes the status codes listed below
const ( NamespaceAlreadyAttached StatusCode = 0x118 NamespaceNotAttached StatusCode = 0x11a )
Status codes
func (StatusCode) String ¶
func (sc StatusCode) String() string
type SwitchtecNvmeCommandError ¶
type SwitchtecNvmeCommandError struct {
// contains filtered or unexported fields
}
func (*SwitchtecNvmeCommandError) Error ¶
func (e *SwitchtecNvmeCommandError) Error() string
func (*SwitchtecNvmeCommandError) Unwrap ¶
func (e *SwitchtecNvmeCommandError) Unwrap() error
type UserIoCmd ¶
type UserIoCmd struct { Opcode uint8 Flags uint8 Control uint16 NBlocks uint16 Reserved uint16 Metadata uint64 Addr uint64 StartLBA uint64 DsMgmt uint32 RefTag uint32 AppTag uint16 AppMask uint16 }
UserIoCmd represents an NVMe User I/O Request This is a copy of the C definition in '/include/linux/nvme_ioctl.h' struct nvme_user_io{}
type VirtualManagementAction ¶
type VirtualManagementAction uint32
const ( PrimaryFlexibleAction VirtualManagementAction = 0x1 SecondaryOfflineAction VirtualManagementAction = 0x7 SecondaryAssignAction VirtualManagementAction = 0x8 SecondaryOnlineAction VirtualManagementAction = 0x9 )
type VirtualManagementResourceType ¶
type VirtualManagementResourceType uint32
const ( VQResourceType VirtualManagementResourceType = 0 VIResourceType VirtualManagementResourceType = 1 )