mirror of
https://github.com/minio/minio
synced 2024-10-14 11:52:56 +00:00
1f262daf6f
This is to ensure that there are no projects that try to import `minio/minio/pkg` into their own repo. Any such common packages should go to `https://github.com/minio/pkg`
146 lines
5.7 KiB
Go
146 lines
5.7 KiB
Go
// Copyright (c) 2015-2021 MinIO, Inc.
|
|
//
|
|
// This file is part of MinIO Object Storage stack
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU Affero General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU Affero General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU Affero General Public License
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
package smart
|
|
|
|
// Defined in <linux/nvme_ioctl.h>
|
|
//nolint:structcheck,deadcode
|
|
type nvmePassthruCommand struct {
|
|
opcode uint8
|
|
flags uint8
|
|
rsvd1 uint16
|
|
nsid uint32
|
|
cdw2 uint32
|
|
cdw3 uint32
|
|
metadata uint64
|
|
addr uint64
|
|
metadataLen uint32
|
|
dataLen uint32
|
|
cdw10 uint32
|
|
cdw11 uint32
|
|
cdw12 uint32
|
|
cdw13 uint32
|
|
cdw14 uint32
|
|
cdw15 uint32
|
|
timeoutMS uint32
|
|
result uint32
|
|
} // 72 bytes
|
|
|
|
type nvmeIdentPowerState struct {
|
|
MaxPower uint16 // Centiwatts
|
|
Rsvd2 uint8
|
|
Flags uint8
|
|
EntryLat uint32 // Microseconds
|
|
ExitLat uint32 // Microseconds
|
|
ReadTput uint8
|
|
ReadLat uint8
|
|
WriteTput uint8
|
|
WriteLat uint8
|
|
IdlePower uint16
|
|
IdleScale uint8
|
|
Rsvd19 uint8
|
|
ActivePower uint16
|
|
ActiveWorkScale uint8
|
|
Rsvd23 [9]byte
|
|
}
|
|
|
|
//nolint:deadcode
|
|
type nvmeIdentController struct {
|
|
VendorID uint16 // PCI Vendor ID
|
|
Ssvid uint16 // PCI Subsystem Vendor ID
|
|
SerialNumber [20]byte // Serial Number
|
|
ModelNumber [40]byte // Model Number
|
|
Firmware [8]byte // Firmware Revision
|
|
Rab uint8 // Recommended Arbitration Burst
|
|
IEEE [3]byte // IEEE OUI Identifier
|
|
Cmic uint8 // Controller Multi-Path I/O and Namespace Sharing Capabilities
|
|
Mdts uint8 // Maximum Data Transfer Size
|
|
Cntlid uint16 // Controller ID
|
|
Ver uint32 // Version
|
|
Rtd3r uint32 // RTD3 Resume Latency
|
|
Rtd3e uint32 // RTD3 Entry Latency
|
|
Oaes uint32 // Optional Asynchronous Events Supported
|
|
Rsvd96 [160]byte // ...
|
|
Oacs uint16 // Optional Admin Command Support
|
|
ACL uint8 // Abort Command Limit
|
|
Aerl uint8 // Asynchronous Event Request Limit
|
|
Frmw uint8 // Firmware Updates
|
|
Lpa uint8 // Log Page Attributes
|
|
Elpe uint8 // Error Log Page Entries
|
|
Npss uint8 // Number of Power States Support
|
|
Avscc uint8 // Admin Vendor Specific Command Configuration
|
|
Apsta uint8 // Autonomous Power State Transition Attributes
|
|
Wctemp uint16 // Warning Composite Temperature Threshold
|
|
Cctemp uint16 // Critical Composite Temperature Threshold
|
|
Mtfa uint16 // Maximum Time for Firmware Activation
|
|
Hmpre uint32 // Host Memory Buffer Preferred Size
|
|
Hmmin uint32 // Host Memory Buffer Minimum Size
|
|
Tnvmcap [16]byte // Total NVM Capacity
|
|
Unvmcap [16]byte // Unallocated NVM Capacity
|
|
Rpmbs uint32 // Replay Protected Memory Block Support
|
|
Rsvd316 [196]byte // ...
|
|
Sqes uint8 // Submission Queue Entry Size
|
|
Cqes uint8 // Completion Queue Entry Size
|
|
Rsvd514 [2]byte // (defined in NVMe 1.3 spec)
|
|
Nn uint32 // Number of Namespaces
|
|
Oncs uint16 // Optional NVM Command Support
|
|
Fuses uint16 // Fused Operation Support
|
|
Fna uint8 // Format NVM Attributes
|
|
Vwc uint8 // Volatile Write Cache
|
|
Awun uint16 // Atomic Write Unit Normal
|
|
Awupf uint16 // Atomic Write Unit Power Fail
|
|
Nvscc uint8 // NVM Vendor Specific Command Configuration
|
|
Rsvd531 uint8 // ...
|
|
Acwu uint16 // Atomic Compare & Write Unit
|
|
Rsvd534 [2]byte // ...
|
|
Sgls uint32 // SGL Support
|
|
Rsvd540 [1508]byte // ...
|
|
Psd [32]nvmeIdentPowerState // Power State Descriptors
|
|
Vs [1024]byte // Vendor Specific
|
|
} // 4096 bytes
|
|
|
|
//nolint:deadcode
|
|
type nvmeSMARTLog struct {
|
|
CritWarning uint8
|
|
Temperature [2]uint8
|
|
AvailSpare uint8
|
|
SpareThresh uint8
|
|
PercentUsed uint8
|
|
Rsvd6 [26]byte
|
|
DataUnitsRead [16]byte
|
|
DataUnitsWritten [16]byte
|
|
HostReads [16]byte
|
|
HostWrites [16]byte
|
|
CtrlBusyTime [16]byte
|
|
PowerCycles [16]byte
|
|
PowerOnHours [16]byte
|
|
UnsafeShutdowns [16]byte
|
|
MediaErrors [16]byte
|
|
NumErrLogEntries [16]byte
|
|
WarningTempTime uint32
|
|
CritCompTime uint32
|
|
TempSensor [8]uint16
|
|
Rsvd216 [296]byte
|
|
} // 512 bytes
|
|
|
|
// NVMeDevice represents drive data about NVMe drives
|
|
//nolint:structcheck
|
|
type NVMeDevice struct {
|
|
Name string
|
|
fd int
|
|
}
|