smartmontools SVN Rev 5597
Utility to control and monitor storage systems with "S.M.A.R.T."
farmcmds.h
Go to the documentation of this file.
1/*
2 * farmcmds.h
3 *
4 * Home page of code is: https://www.smartmontools.org
5 *
6 * Copyright (C) 2021 - 2023 Seagate Technology LLC and/or its Affiliates
7 *
8 * SPDX-License-Identifier: GPL-2.0-or-later
9 */
10
11#ifndef FARMCMDS_H
12#define FARMCMDS_H
13
14// Add __attribute__((packed)) if compiler supports it
15// because some gcc versions (at least ARM) lack support of #pragma pack()
16#ifdef HAVE_ATTR_PACKED_FARM
17#define ATTR_PACKED_FARM __attribute__((packed))
18#else
19#define ATTR_PACKED_FARM
20#endif
21
22#include <stdint.h>
23
24#include "atacmds.h"
25#include "dev_interface.h"
26#include "knowndrives.h"
27#include "static_assert.h"
28
29///////////////////////////////////////////////////////////////////////////////////
30// Seagate ATA Field Access Reliability Metrics log (FARM) structures (GP Log 0xA6)
31
32// Seagate ATA Field Access Reliability Metrics log (FARM) page 0 (read with ATA_READ_LOG_EXT address 0xA6, page 0)
33// Log Header
35 uint64_t signature; // Log Signature = 0x00004641524D4552
36 uint64_t majorRev; // Log Major Revision
37 uint64_t minorRev; // Log Rinor Revision
38 uint64_t pagesSupported; // Number of Pages Supported
39 uint64_t logSize; // Log Size in Bytes
40 uint64_t pageSize; // Page Size in Bytes
41 uint64_t headsSupported; // Maximum Drive Heads Supported
42 uint64_t copies; // Number of Historical Copies
43 uint64_t frameCapture; // Reason for Frame Capture
44};
46
47// Seagate ATA Field Access Reliability Metrics log (FARM) page 1 (read with ATA_READ_LOG_EXT address 0xA6, page 1)
48// Drive Information
50 uint64_t pageNumber; // Page Number = 1
51 uint64_t copyNumber; // Copy Number
52 uint64_t serialNumber; // Serial Number [0:3]
53 uint64_t serialNumber2; // Serial Number [4:7]
54 uint64_t worldWideName; // World Wide Name [0:3]
55 uint64_t worldWideName2; // World Wide Name [4:7]
56 uint64_t deviceInterface; // Device Interface
57 uint64_t deviceCapacity; // 48-bit Device Capacity
58 uint64_t psecSize; // Physical Sector Size in Bytes
59 uint64_t lsecSize; // Logical Sector Size in Bytes
60 uint64_t deviceBufferSize; // Device Buffer Size in Bytes
61 uint64_t heads; // Number of Heads
62 uint64_t factor; // Device Form Factor (ID Word 168)
63 uint64_t rotationRate; // Rotational Rate of Device (ID Word 217)
64 uint64_t firmwareRev; // Firmware Revision [0:3]
65 uint64_t firmwareRev2; // Firmware Revision [4:7]
66 uint64_t security; // ATA Security State (ID Word 128)
67 uint64_t featuresSupported; // ATA Features Supported (ID Word 78)
68 uint64_t featuresEnabled; // ATA Features Enabled (ID Word 79)
69 uint64_t poh; // Power-On Hours
70 uint64_t spoh; // Spindle Power-On Hours
71 uint64_t headFlightHours; // Head Flight Hours
72 uint64_t headLoadEvents; // Head Load Events
73 uint64_t powerCycleCount; // Power Cycle Count
74 uint64_t resetCount; // Hardware Reset Count
75 uint64_t spinUpTime; // SMART Spin-Up Time in milliseconds
76 uint64_t reserved; // Reserved
77 uint64_t reserved0; // Reserved
78 uint64_t reserved1; // Reserved
79 uint64_t reserved2; // Reserved
80 uint64_t timeToReady; // Time to ready of the last power cycle
81 uint64_t timeHeld; // Time drive is held in staggered spin during the last power on sequence
82 uint64_t modelNumber[10]; // Lower 32 Model Number (added 2.14)
83 uint64_t driveRecordingType; // 0 for SMR and 1 for CMR (added 2.15)
84 uint64_t depopped; // Has the drive been depopped 1 = depopped and 0 = not depopped (added 2.15)
85 uint64_t maxNumberForReasign; // Max Number of Available Sectors for Reassignment. Value in disc sectors (added 3.3)
86 uint64_t dateOfAssembly; // Date of assembly in ASCII YYWW where YY is the year and WW is the calendar week (added 4.2)
87 uint64_t depopulationHeadMask; // Depopulation Head Mask
88};
90
91// Seagate ATA Field Access Reliability Metrics log (FARM) page 2 (read with ATA_READ_LOG_EXT address 0xA6, page 2)
92// Workload Statistics
94 uint64_t pageNumber; // Page Number = 2
95 uint64_t copyNumber; // Copy Number
96 uint64_t reserved; // Reserved
97 uint64_t totalReadCommands; // Total Number of Read Commands
98 uint64_t totalWriteCommands; // Total Number of Write Commands
99 uint64_t totalRandomReads; // Total Number of Random Read Commands
100 uint64_t totalRandomWrites; // Total Number of Random Write Commands
101 uint64_t totalNumberofOtherCMDS; // Total Number Of Other Commands
102 uint64_t logicalSecWritten; // Logical Sectors Written
103 uint64_t logicalSecRead; // Logical Sectors Read
104 uint64_t dither; // Number of dither events during current power cycle (added 3.4)
105 uint64_t ditherRandom; // Number of times dither was held off during random workloads during current power cycle (added 3.4)
106 uint64_t ditherSequential; // Number of times dither was held off during sequential workloads during current power cycle (added 3.4)
107 uint64_t readCommandsByRadius1; // Number of Read Commands from 0-3.125% of LBA space for last 3 SMART Summary Frames (added 4.4)
108 uint64_t readCommandsByRadius2; // Number of Read Commands from 3.125-25% of LBA space for last 3 SMART Summary Frames (added 4.4)
109 uint64_t readCommandsByRadius3; // Number of Read Commands from 25-75% of LBA space for last 3 SMART Summary Frames (added 4.4)
110 uint64_t readCommandsByRadius4; // Number of Read Commands from 75-100% of LBA space for last 3 SMART Summary Frames (added 4.4)
111 uint64_t writeCommandsByRadius1; // Number of Write Commands from 0-3.125% of LBA space for last 3 SMART Summary Frames (added 4.4)
112 uint64_t writeCommandsByRadius2; // Number of Write Commands from 3.125-25% of LBA space for last 3 SMART Summary Frames (added 4.4)
113 uint64_t writeCommandsByRadius3; // Number of Write Commands from 25-75% of LBA space for last 3 SMART Summary Frames (added 4.4)
114 uint64_t writeCommandsByRadius4; // Number of Write Commands from 75-100% of LBA space for last 3 SMART Summary Frames (added 4.4)
115};
117
118// Seagate ATA Field Access Reliability Metrics log (FARM) page 3 (read with ATA_READ_LOG_EXT address 0xA6, page 3)
119// Error Statistics
121 uint64_t pageNumber; // Page Number = 3
122 uint64_t copyNumber; // Copy Number
123 uint64_t totalUnrecoverableReadErrors; // Number of Unrecoverable Read Errors
124 uint64_t totalUnrecoverableWriteErrors; // Number of Unrecoverable Write Errors
125 uint64_t totalReallocations; // Number of Re-Allocated Sectors
126 uint64_t totalReadRecoveryAttepts; // Number of Read Recovery Attempts
127 uint64_t totalMechanicalStartRetries; // Number of Mechanical Start Retries
128 uint64_t totalReallocationCanidates; // Number of Re-Allocated Candidate Sectors
129 uint64_t totalASREvents; // Number of ASR Events
130 uint64_t totalCRCErrors; // Number of Interface CRC Errors
131 uint64_t attrSpinRetryCount; // Spin Retry Count (Most recent value from array at byte 401 of attribute sector)
132 uint64_t normalSpinRetryCount; // Spin Retry Count (SMART Attribute 10 Normalized)
133 uint64_t worstSpinRretryCount; // Spin Retry Count (SMART Attribute 10 Worst Ever)
134 uint64_t attrIOEDCErrors; // Number of IOEDC Errors (SMART Attribute 184 Raw)
135 uint64_t attrCTOCount; // CTO Count Total (SMART Attribute 188 Raw[0..1])
136 uint64_t overFiveSecCTO; // CTO Count Over 5s (SMART Attribute 188 Raw[2..3])
137 uint64_t overSevenSecCTO; // CTO Count Over 7.5s (SMART Attribute 188 Raw[4..5])
138 uint64_t totalFlashLED; // Total Flash LED (Assert) Events
139 uint64_t indexFlashLED; // Index of last entry in Flash LED Info array below, in case the array wraps
140 uint64_t uncorrectables; // Uncorrectable errors (SMART Attribute 187 Raw)
141 uint64_t reserved; // Reserved
142 uint64_t flashLEDArray[8]; // Info on the last 8 Flash LED (assert) events wrapping array (added 2.7)
143 uint64_t reserved0[8]; // Reserved
144 uint64_t reserved1[2]; // Reserved
145 uint64_t reserved2[15]; // Reserved
146 uint64_t universalTimestampFlashLED[8]; // Universal Timestamp (us) of last 8 Flash LED (assert) Events, wrapping array
147 uint64_t powerCycleFlashLED[8]; // Power Cycle of the last 8 Flash LED (assert) Events, wrapping array
148 uint64_t cumulativeUnrecoverableReadERC; // Cumulative Lifetime Unrecoverable Read errors due to Error Recovery Control (e.g. ERC timeout)
149 uint64_t cumulativeUnrecoverableReadRepeating[24]; // Cumulative Lifetime Unrecoverable Read Repeating by head
150 uint64_t cumulativeUnrecoverableReadUnique[24]; // Cumulative Lifetime Unrecoverable Read Unique by head
151};
153
154// Seagate ATA Field Access Reliability Metrics log (FARM) page 4 (read with ATA_READ_LOG_EXT address 0xa6, page 4)
155// Environment Statistics
157 uint64_t pageNumber; // Page Number = 4
158 uint64_t copyNumber; // Copy Number
159 uint64_t curentTemp; // Current Temperature in Celsius
160 uint64_t highestTemp; // Highest Temperature in Celsius
161 uint64_t lowestTemp; // Lowest Temperature in Celsius
162 uint64_t averageTemp; // Average Short-Term Temperature in Celsius
163 uint64_t averageLongTemp; // Average Long-Term Temperature in Celsius
164 uint64_t highestShortTemp; // Highest Average Short-Term Temperature in Celsius
165 uint64_t lowestShortTemp; // Lowest Average Short-Term Temperature in Celsius
166 uint64_t highestLongTemp; // Highest Average Long-Term Temperature in Celsius
167 uint64_t lowestLongTemp; // Lowest Average Long-Term Temperature in Celsius
168 uint64_t overTempTime; // Time In Over Temperature in Minutes
169 uint64_t underTempTime; // Time In Under Temperature in Minutes
170 uint64_t maxTemp; // Specified Max Operating Temperature in Celsius
171 uint64_t minTemp; // Specified Min Operating Temperature in Celsius
172 uint64_t reserved; // Reserved
173 uint64_t reserved0; // Reserved
174 uint64_t humidity; // Current Relative Humidity (in units of 0.1%)
175 uint64_t reserved1; // Reserved
176 uint64_t currentMotorPower; // Current Motor Power, value from most recent SMART Summary Frame
177 uint64_t current12v; // Current 12V input in mV (added 3.7)
178 uint64_t min12v; // Minimum 12V input from last 3 SMART Summary Frames in mV (added 3.7)
179 uint64_t max12v; // Maximum 12V input from last 3 SMART Summary Frames in mV (added 3.7)
180 uint64_t current5v; // Current 5V input in mV (added 3.7)
181 uint64_t min5v; // Minimum 5V input from last 3 SMART Summary Frames in mV (added 3.7)
182 uint64_t max5v; // Maximum 5V input from last 3 SMART Summary Frames in mV (added 3.7)
183 uint64_t powerAverage12v; // 12V Power Average (mW) - Average of last 3 SMART Summary Frames (added 4.3)
184 uint64_t powerMin12v; // 12V Power Min (mW) - Lowest of last 3 SMART Summary Frames (added 4.3)
185 uint64_t powerMax12v; // 12V Power Max (mW) - Highest of last 3 SMART Summary Frames (added 4.3)
186 uint64_t powerAverage5v; // 5V Power Average (mW) - Average of last 3 SMART Summary Frames (added 4.3)
187 uint64_t powerMin5v; // 5V Power Min (mW) - Lowest of last 3 SMART Summary Frames (added 4.3)
188 uint64_t powerMax5v; // 5V Power Max (mW) - Highest of last 3 SMART Summary Frames (added 4.3)
189};
191
192// Seagate ATA Field Access Reliability Metrics log (FARM) page 5 (read with ATA_READ_LOG_EXT address 0xA6, page 5)
193// Reliability Statistics
195 int64_t pageNumber; // Page Number = 5
196 int64_t copyNumber; // Copy Number
197 uint64_t reserved; // Reserved
198 uint64_t reserved0; // Reserved
199 uint64_t reserved1[24]; // Reserved
200 uint64_t reserved2[24]; // Reserved
201 uint64_t reserved3; // Reserved
202 uint64_t reserved4; // Reserved
203 uint64_t reserved5; // Reserved
204 uint64_t reserved6; // Reserved
205 uint64_t reserved7; // Reserved
206 uint64_t reserved8; // Reserved
207 uint64_t reserved9; // Reserved
208 uint64_t reserved10; // Reserved
209 uint64_t reserved11; // Reserved
210 uint64_t reserved12; // Reserved
211 uint64_t reserved13; // Reserved
212 uint64_t reserved14[24]; // Reserved
213 uint64_t reserved15; // Reserved
214 int64_t DVGASkipWriteDetect[24]; // [24] DVGA Skip Write Detect by Head
215 int64_t RVGASkipWriteDetect[24]; // [24] RVGA Skip Write Detect by Head
216 int64_t FVGASkipWriteDetect[24]; // [24] FVGA Skip Write Detect by Head
217 int64_t skipWriteDetectThresExceeded[24]; // [24] Skip Write Detect Threshold Exceeded Count by Head
218 int64_t attrErrorRateRaw; // Error Rate Raw
219 int64_t attrErrorRateNormal; // Error Rate Normalized
220 int64_t attrErrorRateWorst; // Error Rate Worst
221 int64_t attrSeekErrorRateRaw; // Seek Error Rate Raw
222 int64_t attrSeekErrorRateNormal; // Seek Error Rate Normalized
223 int64_t attrSeekErrorRateWorst; // Seek Error Rate Worst
224 int64_t attrUnloadEventsRaw; // High Priority Unload Events
225 uint64_t reserved16; // Reserved
226 uint64_t reserved17[24]; // Reserved
227 uint64_t reserved18[24]; // Reserved
228 uint64_t reserved19[24]; // Reserved
229 uint64_t mrHeadResistance[24]; // MR Head Resistance from most recent SMART Summary Frame by Head
230 uint64_t reserved21[24]; // Reserved
231 uint64_t reserved22[24]; // Reserved
232 uint64_t reserved23[24]; // Reserved
233 uint64_t reserved24[24][3]; // Reserved
234 uint64_t reserved25[24][3]; // Reserved
235 uint64_t reserved26[24]; // Reserved
236 uint64_t reserved27[24]; // Reserved
237 int64_t reserved28[24]; // Reserved
238 int64_t reserved29[24][3]; // Reserved
239 uint64_t reserved30; // Reserved
240 int64_t reallocatedSectors[24]; // [24] Number of Reallocated Sectors per Head
241 int64_t reallocationCandidates[24]; // [24] Number of Reallocation Candidate Sectors per Head
242 int64_t heliumPresureTrip; // Helium Pressure Threshold Tripped ( 1 - trip, 0 - no trip)
243 uint64_t reserved31[24]; // Reserved
244 uint64_t reserved32[24]; // Reserved
245 uint64_t reserved33[24]; // Reserved
246 int64_t writeWorkloadPowerOnTime[24]; // [24] Write Workload Power-on Time in Seconds, value from most recent SMART Summary Frame by Head
247 uint64_t reserved34; // Reserved
248 uint64_t reserved35; // Reserved
249 uint64_t reserved36; // Reserved
250 uint64_t reserved37[24]; // Reserved
251 int64_t secondMRHeadResistance[24]; // [24] Second Head, MR Head Resistance from most recent SMART Summary Frame by Head
252 uint64_t reserved38[24]; // Reserved
253 uint64_t reserved39[24]; // Reserved
254 uint64_t reserved40[24][3]; // Reserved
255 uint64_t reserved41[24][3]; // Reserved
256 uint64_t reserved42[24][3]; // Reserved
257 int64_t numberLBACorrectedParitySector; // Number of LBAs Corrected by Parity Sector
258};
260
261// Seagate ATA Field Access Reliability Metrics log (FARM) all pages
263 ataFarmHeader header; // Log Header page
264 ataFarmDriveInformation driveInformation; // Drive Information page
265 ataFarmWorkloadStatistics workload; // Workload Statistics page
266 ataFarmErrorStatistics error; // Error Statistics page
267 ataFarmEnvironmentStatistics environment; // Environment Statistics page
268 ataFarmReliabilityStatistics reliability; // Reliability Statistics page
269};
270STATIC_ASSERT(sizeof(ataFarmLog)== 72 + 376 + 168 + 952 + 256 + 8880);
271
272/////////////////////////////////////////////////////////////////////////////////////////////////////////
273// Seagate SCSI Field Access Reliability Metrics log (FARM) structures (SCSI Log Page 0x3D, sub-page 0x3)
274
275// Seagate SCSI Field Access Reliability Metrics log (FARM) PAGE Header (read with SCSI LogSense page 0x3D, sub-page 0x3)
276// Page Header
278 uint8_t pageCode; // Page Code (0x3D)
279 uint8_t subpageCode; // Sub-Page Code (0x03)
280 uint16_t pageLength; // Page Length
281};
283
284// Seagate SCSI Field Access Reliability Metrics log (FARM) PARAMETER Header (read with SCSI LogSense page 0x3D, sub-page 0x3)
285// Parameter Header
287 uint16_t parameterCode; // Page Code (0x3D)
288 uint8_t parameterControl; // Sub-Page Code (0x03)
289 uint8_t parameterLength; // Page Length
290};
292
293// Seagate SCSI Field Access Reliability Metrics log (FARM) parameter (read with SCSI LogSense page 0x3D, sub-page 0x3)
294// Log Header
295#pragma pack(1)
298 uint64_t signature; // Log Signature = 0x00004641524D4552
299 uint64_t majorRev; // Log Major Revision
300 uint64_t minorRev; // Log Rinor Revision
301 uint64_t parametersSupported; // Number of Parameters Supported
302 uint64_t logSize; // Log Page Size in Bytes
303 uint64_t reserved; // Reserved
304 uint64_t headsSupported; // Maximum Drive Heads Supported
305 uint64_t reserved0; // Reserved
306 uint64_t frameCapture; // Reason for Frame Capture
308#pragma pack()
310
311// Seagate SCSI Field Access Reliability Metrics log (FARM) parameter (read with SCSI LogSense page 0x3D, sub-page 0x3)
312// Drive Information
313#pragma pack(1)
316 uint64_t pageNumber; // Page Number = 1
317 uint64_t copyNumber; // Copy Number
318 uint64_t serialNumber; // Serial Number [0:3]
319 uint64_t serialNumber2; // Serial Number [4:7]
320 uint64_t worldWideName; // World Wide Name [0:3]
321 uint64_t worldWideName2; // World Wide Name [4:7]
322 uint64_t deviceInterface; // Device Interface
323 uint64_t deviceCapacity; // 48-bit Device Capacity
324 uint64_t psecSize; // Physical Sector Size in Bytes
325 uint64_t lsecSize; // Logical Sector Size in Bytes
326 uint64_t deviceBufferSize; // Device Buffer Size in Bytes
327 uint64_t heads; // Number of Heads
328 uint64_t factor; // Device Form Factor (ID Word 168)
329 uint64_t rotationRate; // Rotational Rate of Device (ID Word 217)
330 uint64_t firmwareRev; // Firmware Revision [0:3]
331 uint64_t firmwareRev2; // Firmware Revision [4:7]
332 uint64_t reserved; // Reserved
333 uint64_t reserved0; // Reserved
334 uint64_t reserved1; // Reserved
335 uint64_t poh; // Power-On Hours
336 uint64_t reserved2; // Reserved
337 uint64_t reserved3; // Reserved
338 uint64_t reserved4; // Reserved
339 uint64_t powerCycleCount; // Power Cycle Count
340 uint64_t resetCount; // Hardware Reset Count
341 uint64_t reserved5; // Reserved
342 uint64_t reserved6; // Reserved
343 uint64_t reserved7; // Reserved
344 uint64_t reserved8; // Reserved
345 uint64_t reserved9; // Reserved
346 uint64_t dateOfAssembly; // Date of assembly in ASCII YYWW where YY is the year and WW is the calendar week (added 4.2)
348#pragma pack()
350
351// Seagate SCSI Field Access Reliability Metrics log (FARM) parameter (read with SCSI LogSense page 0x3D, sub-page 0x3)
352// Workload Statistics
353#pragma pack(1)
356 uint64_t pageNumber; // Page Number = 2
357 uint64_t copyNumber; // Copy Number
358 uint64_t reserved; // Reserved
359 uint64_t totalReadCommands; // Total Number of Read Commands
360 uint64_t totalWriteCommands; // Total Number of Write Commands
361 uint64_t totalRandomReads; // Total Number of Random Read Commands
362 uint64_t totalRandomWrites; // Total Number of Random Write Commands
363 uint64_t totalNumberofOtherCMDS; // Total Number Of Other Commands
364 uint64_t logicalSecWritten; // Logical Sectors Written
365 uint64_t logicalSecRead; // Logical Sectors Read
366 uint64_t readCommandsByRadius1; // Number of Read Commands from 0-3.125% of LBA space for last 3 SMART Summary Frames (added 4.4)
367 uint64_t readCommandsByRadius2; // Number of Read Commands from 3.125-25% of LBA space for last 3 SMART Summary Frames (added 4.4)
368 uint64_t readCommandsByRadius3; // Number of Read Commands from 25-75% of LBA space for last 3 SMART Summary Frames (added 4.4)
369 uint64_t readCommandsByRadius4; // Number of Read Commands from 75-100% of LBA space for last 3 SMART Summary Frames (added 4.4)
370 uint64_t writeCommandsByRadius1; // Number of Write Commands from 0-3.125% of LBA space for last 3 SMART Summary Frames (added 4.4)
371 uint64_t writeCommandsByRadius2; // Number of Write Commands from 3.125-25% of LBA space for last 3 SMART Summary Frames (added 4.4)
372 uint64_t writeCommandsByRadius3; // Number of Write Commands from 25-75% of LBA space for last 3 SMART Summary Frames (added 4.4)
373 uint64_t writeCommandsByRadius4; // Number of Write Commands from 75-100% of LBA space for last 3 SMART Summary Frames (added 4.4)
375#pragma pack()
377
378// Seagate SCSI Field Access Reliability Metrics log (FARM) parameter (read with SCSI LogSense page 0x3D, sub-page 0x3)
379// Error Statistics
380#pragma pack(1)
383 uint64_t pageNumber; // Page Number = 3
384 uint64_t copyNumber; // Copy Number
385 uint64_t totalUnrecoverableReadErrors; // Number of Unrecoverable Read Errors
386 uint64_t totalUnrecoverableWriteErrors; // Number of Unrecoverable Write Errors
387 uint64_t reserved; // Reserved
388 uint64_t reserved0; // Reserved
389 uint64_t totalMechanicalStartRetries; // Number of Mechanical Start Retries
390 uint64_t reserved1; // Reserved
391 uint64_t reserved2; // Reserved
392 uint64_t reserved3; // Reserved
393 uint64_t reserved4; // Reserved
394 uint64_t reserved5; // Reserved
395 uint64_t reserved6; // Reserved
396 uint64_t reserved7; // Reserved
397 uint64_t reserved8; // Reserved
398 uint64_t reserved9; // Reserved
399 uint64_t reserved10; // Reserved
400 uint64_t reserved11; // Reserved
401 uint64_t reserved12; // Reserved
402 uint64_t reserved13; // Reserved
403 uint64_t tripCode; // If SMART Trip present the reason code (FRU code)
404 uint64_t invalidDWordCountA; // Invalid DWord Count (Port A)
405 uint64_t invalidDWordCountB; // Invalid DWord Count (Port B)
406 uint64_t disparityErrorCodeA; // Disparity Error Count (Port A)
407 uint64_t disparityErrorCodeB; // Disparity Error Count (Port A)
408 uint64_t lossOfDWordSyncA; // Loss of DWord Sync (Port A)
409 uint64_t lossOfDWordSyncB; // Loss of DWord Sync (Port A)
410 uint64_t phyResetProblemA; // Phy Reset Problem (Port A)
411 uint64_t phyResetProblemB; // Phy Reset Problem (Port A)
413#pragma pack()
415
416// Seagate SCSI Field Access Reliability Metrics log (FARM) parameter (read with SCSI LogSense page 0x3D, sub-page 0x3)
417// Environment Statistics
418#pragma pack(1)
421 uint64_t pageNumber; // Page Number = 4
422 uint64_t copyNumber; // Copy Number
423 uint64_t curentTemp; // Current Temperature in Celsius (Lower 16 bits are a signed integer in units of 0.1C)
424 uint64_t highestTemp; // Highest Temperature in Celsius (Lower 16 bits are a signed integer in units of 0.1C)
425 uint64_t lowestTemp; // Lowest Temperature in Celsius (Lower 16 bits are a signed integer in units of 0.1C)
426 uint64_t reserved; // Reserved
427 uint64_t reserved0; // Reserved
428 uint64_t reserved1; // Reserved
429 uint64_t reserved2; // Reserved
430 uint64_t reserved3; // Reserved
431 uint64_t reserved4; // Reserved
432 uint64_t reserved5; // Reserved
433 uint64_t reserved6; // Reserved
434 uint64_t maxTemp; // Specified Max Operating Temperature in Celsius
435 uint64_t minTemp; // Specified Min Operating Temperature in Celsius
436 uint64_t reserved7; // Reserved
437 uint64_t reserved8; // Reserved
438 uint64_t humidity; // Current Relative Humidity (in units of 0.1%)
439 uint64_t reserved9; // Reserved
440 uint64_t currentMotorPower; // Current Motor Power, value from most recent SMART Summary Frame
441 uint64_t powerAverage12v; // 12V Power Average (mW) - Average of last 3 SMART Summary Frames (added 4.3)
442 uint64_t powerMin12v; // 12V Power Min (mW) - Lowest of last 3 SMART Summary Frames (added 4.3)
443 uint64_t powerMax12v; // 12V Power Max (mW) - Highest of last 3 SMART Summary Frames (added 4.3)
444 uint64_t powerAverage5v; // 5V Power Average (mW) - Average of last 3 SMART Summary Frames (added 4.3)
445 uint64_t powerMin5v; // 5V Power Min (mW) - Lowest of last 3 SMART Summary Frames (added 4.3)
446 uint64_t powerMax5v; // 5V Power Max (mW) - Highest of last 3 SMART Summary Frames (added 4.3)
448#pragma pack()
450
451// Seagate SCSI Field Access Reliability Metrics log (FARM) parameter (read with SCSI LogSense page 0x3D, sub-page 0x3)
452// Reliability Statistics
453#pragma pack(1)
456 int64_t pageNumber; // Page Number = 5
457 int64_t copyNumber; // Copy Number
458 uint64_t reserved; // Reserved
459 uint64_t reserved0; // Reserved
460 uint64_t reserved1; // Reserved
461 uint64_t reserved2; // Reserved
462 uint64_t reserved3; // Reserved
463 uint64_t reserved4; // Reserved
464 uint64_t reserved5; // Reserved
465 uint64_t reserved6; // Reserved
466 uint64_t reserved7; // Reserved
467 uint64_t reserved8; // Reserved
468 uint64_t reserved9; // Reserved
469 uint64_t reserved10; // Reserved
470 uint64_t reserved11; // Reserved
471 uint64_t reserved12; // Reserved
472 uint64_t reserved13; // Reserved
473 uint64_t reserved14; // Reserved
474 uint64_t reserved15; // Reserved
475 uint64_t reserved16; // Reserved
476 uint64_t reserved17; // Reserved
477 uint64_t reserved18; // Reserved
478 uint64_t reserved19; // Reserved
479 uint64_t reserved20; // Reserved
480 uint64_t reserved21; // Reserved
481 int64_t heliumPresureTrip; // Helium Pressure Threshold Tripped ( 1 - trip, 0 - no trip)
482 uint64_t reserved34; // Reserved
483 uint64_t reserved35; // Reserved
484 uint64_t reserved36; // Reserved
486#pragma pack()
488
489// Seagate SCSI Field Access Reliability Metrics log (FARM) parameter (read with SCSI LogSense page 0x3D, sub-page 0x3)
490// Drive Information Continued
491#pragma pack(1)
494 uint64_t pageNumber; // Page Number = 6
495 uint64_t copyNumber; // Copy Number
496 uint64_t depopulationHeadMask; // Depopulation Head Mask
497 uint64_t productID; // Product ID [0:3]
498 uint64_t productID2; // Product ID [4:7]
499 uint64_t productID3; // Product ID [8:11]
500 uint64_t productID4; // Product ID [12:15]
501 uint64_t driveRecordingType; // Drive Recording Type - 0 for SMR and 1 for CMR
502 uint64_t dpopped; // Is drive currently depopped. 1 = depopped, 0 = not depopped
503 uint64_t maxNumberForReasign; // Max Number of Available Sectors for Re-Assignment. Value in disc sectors
504 uint64_t timeToReady; // Time to Ready of the last power cycle in milliseconds
505 uint64_t timeHeld; // Time the drive is held in staggered spin in milliseconds
506 uint64_t lastServoSpinUpTime; // The last servo spin up time in milliseconds
508#pragma pack()
510
511// Seagate SCSI Field Access Reliability Metrics log (FARM) parameter (read with SCSI LogSense page 0x3D, sub-page 0x3)
512// Environment Statistics Continued
513#pragma pack(1)
516 uint64_t pageNumber; // Page Number = 7
517 uint64_t copyNumber; // Copy Number
518 uint64_t current12v; // Current 12V input in mV
519 uint64_t min12v; // Minimum 12V input from last 3 SMART Summary Frames in mV
520 uint64_t max12v; // Maximum 12V input from last 3 SMART Summary Frames in mV
521 uint64_t current5v; // Current 5V input in mV
522 uint64_t min5v; // Minimum 5V input from last 3 SMART Summary Frames in mV
523 uint64_t max5v; // Maximum 5V input from last 3 SMART Summary Frames in mV
525#pragma pack()
527
528// Seagate SCSI Field Access Reliability Metrics log (FARM) parameter (read with SCSI LogSense page 0x3D, sub-page 0x3)
529// "By Head" Parameters
530#pragma pack(1)
533 uint64_t headValue[20]; // [16] Head Information
535#pragma pack()
536STATIC_ASSERT(sizeof(scsiFarmByHead)==(4 +(20 * 8)));
537
538// Seagate SCSI Field Access Reliability Metrics log (FARM) parameter (read with SCSI LogSense page 0x3D, sub-page 0x3)
539// "By Actuator" Parameters
540#pragma pack(1)
543 uint64_t pageNumber; // Page Number
544 uint64_t copyNumber; // Copy Number
545 uint64_t actuatorID; // Actuator ID
546 uint64_t headLoadEvents; // Head Load Events
547 uint64_t reserved; // Reserved
548 uint64_t reserved0; // Reserved
549 uint64_t timelastIDDTest; // Timestamp of last IDD test
550 uint64_t subcommandlastIDDTest; // Sub-Command of last IDD test
551 uint64_t numberGListReclam; // Number of G-list reclamations
552 uint64_t servoStatus; // Servo Status (follows standard DST error code definitions)
553 uint64_t numberSlippedSectorsBeforeIDD; // Number of Slipped Sectors Before IDD Scan
554 uint64_t numberSlippedSectorsAfterIDD; // Number of Slipped Sectors After IDD Scan
555 uint64_t numberResidentReallocatedBeforeIDD; // Number of Resident Reallocated Sectors Before IDD Scan
556 uint64_t numberResidentReallocatedAfterIDD; // Number of Resident Reallocated Sectors After IDD Scan
557 uint64_t numberScrubbedSectorsBeforeIDD; // Number of Successfully Scrubbed Sectors Before IDD Scan
558 uint64_t numberScrubbedSectorsAfterIDD; // Number of Successfully Scrubbed Sectors After IDD Scan
559 uint64_t dosScansPerformed; // Number of DOS Scans Performed
560 uint64_t lbasCorrectedISP; // Number of LBAs Corrected by Intermediate Super Parity
561 uint64_t numberValidParitySectors; // Number of Valid Parity Sectors
562 uint64_t reserved1; // Reserved
563 uint64_t reserved2; // Reserved
564 uint64_t reserved3; // Reserved
565 uint64_t numberLBACorrectedParitySector; // Number of LBAs Corrected by Parity Sector
567#pragma pack()
569
570// Seagate SCSI Field Access Reliability Metrics log (FARM) parameter (read with SCSI LogSense page 0x3D, sub-page 0x3)
571// "By Actuator" Parameters for Flash LED Information
572#pragma pack(1)
575 uint64_t pageNumber; // Page Number
576 uint64_t copyNumber; // Copy Number
577 uint64_t actuatorID; // Actuator ID
578 uint64_t totalFlashLED; // Total Flash LED (Assert) Events
579 uint64_t indexFlashLED; // Index of last entry in Flash LED Info array below, in case the array wraps
580 uint64_t flashLEDArray[8]; // Info on the last 8 Flash LED (assert) events wrapping array
581 uint64_t universalTimestampFlashLED[8]; // Universal Timestamp (us) of last 8 Flash LED (assert) Events, wrapping array
582 uint64_t powerCycleFlashLED[8]; // Power Cycle of the last 8 Flash LED (assert) Events, wrapping array
584#pragma pack()
586
587// Seagate SCSI Field Access Reliability Metrics log (FARM) parameter (read with SCSI LogSense page 0x3D, sub-page 0x3)
588// "By Actuator" Parameters for Reallocation Information
589#pragma pack(1)
592 uint64_t pageNumber; // Page Number
593 uint64_t copyNumber; // Copy Number
594 uint64_t actuatorID; // Actuator ID
595 uint64_t totalReallocations; // Number of Re-Allocated Sectors
596 uint64_t totalReallocationCanidates; // Number of Re-Allocated Candidate Sectors
597 uint64_t reserved[15]; // Reserved
599#pragma pack()
601
602// Seagate SCSI Field Access Reliability Metrics log (FARM) all parameters
604 scsiFarmPageHeader pageHeader; // Head for whole log page
605 scsiFarmHeader header; // Log Header parameter
606 scsiFarmDriveInformation driveInformation; // Drive Information parameter
607 scsiFarmWorkloadStatistics workload; // Workload Statistics parameter
608 scsiFarmErrorStatistics error; // Error Statistics parameter
609 scsiFarmEnvironmentStatistics environment; // Environment Statistics parameter
610 scsiFarmReliabilityStatistics reliability; // Reliability Statistics parameter
611 scsiFarmDriveInformation2 driveInformation2; // Drive Information parameter continued
612 scsiFarmEnvironmentStatistics2 environment2; // Environment Statistics parameter continued
623 scsiFarmByHead mrHeadResistance; // MR Head Resistance from most recent SMART Summary Frame by Head
630 scsiFarmByHead totalReallocations; // Number of Reallocated Sectors
631 scsiFarmByHead totalReallocationCanidates; // Number of Reallocation Candidate Sectors
635 scsiFarmByHead writeWorkloadPowerOnTime; // Write Workload Power-on Time in Seconds, value from most recent SMART Frame by Head
637 scsiFarmByHead cumulativeUnrecoverableReadRepeat; // Cumulative Lifetime Unrecoverable Read Repeat by head
638 scsiFarmByHead cumulativeUnrecoverableReadUnique; // Cumulative Lifetime Unrecoverable Read Unique by head
648 scsiFarmByHead secondMRHeadResistance; // Second Head MR Head Resistance from most recent SMART Summary Frame by Head
660 scsiFarmByActuator actuator0; // Actuator 0 parameters
661 scsiFarmByActuatorFLED actuatorFLED0; // Actuator 0 FLED Information parameters
662 scsiFarmByActuatorReallocation actuatorReallocation0; // Actuator 0 Reallocation parameters
663 scsiFarmByActuator actuator1; // Actuator 1 parameters
664 scsiFarmByActuatorFLED actuatorFLED1; // Actuator 1 FLED Information parameters
665 scsiFarmByActuatorReallocation actuatorReallocation1; // Actuator 1 Reallocation parameters
666 scsiFarmByActuator actuator2; // Actuator 2 parameters
667 scsiFarmByActuatorFLED actuatorFLED2; // Actuator 2 FLED Information parameters
668 scsiFarmByActuatorReallocation actuatorReallocation2; // Actuator 2 Reallocation parameters
669 scsiFarmByActuator actuator3; // Actuator 3 parameters
670 scsiFarmByActuatorFLED actuatorFLED3; // Actuator 3 FLED Information parameters
671 scsiFarmByActuatorReallocation actuatorReallocation3; // Actuator 3 Reallocation parameters
672};
673STATIC_ASSERT(sizeof(scsiFarmLog)== 4 + 76 + 252 + 148 + 236 + 212 + 236 + 108 + 68 +(47 *((8 * 20)+ 4))+ 188 * 4 + 236 * 4 + 164 * 4);
674
675/*
676 * Determines whether the current drive is an ATA Seagate drive
677 *
678 * @param drive: Pointer to drive struct containing ATA device information (*ata_identify_device)
679 * @param dbentry: Pointer to struct containing drive database entries (see drivedb.h) (drive_settings*)
680 * @return True if the drive is a Seagate drive, false otherwise (bool)
681 */
682bool ataIsSeagate(const ata_identify_device& drive, const drive_settings* dbentry);
683
684/*
685 * Reads vendor-specific FARM log (GP Log 0xA6) data from Seagate
686 * drives and parses data into FARM log structures
687 * Returns parsed structure as defined in atacmds.h
688 *
689 * @param device: Pointer to instantiated device object (ata_device*)
690 * @param farmLog: Reference to parsed data in structure(s) with named members (ataFarmLog&)
691 * @param nsectors: Number of 512-byte sectors in this log (unsigned int)
692 * @return true if read successful, false otherwise (bool)
693 */
694bool ataReadFarmLog(ata_device* device, ataFarmLog& farmLog, unsigned nsectors);
695
696/*
697 * Determines whether the current drive is a SCSI Seagate drive
698 *
699 * @param scsi_vendor: Text of SCSI vendor field (char*)
700 * @return True if the drive is a Seagate drive, false otherwise (bool)
701 */
702bool scsiIsSeagate(char* scsi_vendor);
703
704/*
705 * Reads vendor-specific FARM log (SCSI log page 0x3D, sub-page 0x3) data from Seagate
706 * drives and parses data into FARM log structures
707 * Returns parsed structure as defined in scsicmds.h
708 *
709 * @param device: Pointer to instantiated device object (scsi_device*)
710 * @param farmLog: Reference to parsed data in structure(s) with named members (scsiFarmLog&)
711 * @return true if read successful, false otherwise (bool)
712 */
713bool scsiReadFarmLog(scsi_device* device, scsiFarmLog& farmLog);
714
715#endif
ATA device access.
SCSI device access.
bool scsiReadFarmLog(scsi_device *device, scsiFarmLog &farmLog)
Definition: farmcmds.cpp:162
#define ATTR_PACKED_FARM
Definition: farmcmds.h:19
bool scsiIsSeagate(char *scsi_vendor)
Definition: farmcmds.cpp:149
bool ataIsSeagate(const ata_identify_device &drive, const drive_settings *dbentry)
Definition: farmcmds.cpp:33
bool ataReadFarmLog(ata_device *device, ataFarmLog &farmLog, unsigned nsectors)
Definition: farmcmds.cpp:56
static char scsi_vendor[8+1]
Definition: scsiprint.cpp:94
#define STATIC_ASSERT(x)
Definition: static_assert.h:24
uint64_t maxNumberForReasign
Definition: farmcmds.h:85
uint64_t headLoadEvents
Definition: farmcmds.h:72
uint64_t headFlightHours
Definition: farmcmds.h:71
uint64_t modelNumber[10]
Definition: farmcmds.h:82
uint64_t dateOfAssembly
Definition: farmcmds.h:86
uint64_t worldWideName2
Definition: farmcmds.h:55
uint64_t featuresSupported
Definition: farmcmds.h:67
uint64_t deviceCapacity
Definition: farmcmds.h:57
uint64_t powerCycleCount
Definition: farmcmds.h:73
uint64_t deviceBufferSize
Definition: farmcmds.h:60
uint64_t driveRecordingType
Definition: farmcmds.h:83
uint64_t worldWideName
Definition: farmcmds.h:54
uint64_t serialNumber2
Definition: farmcmds.h:53
uint64_t depopulationHeadMask
Definition: farmcmds.h:87
uint64_t deviceInterface
Definition: farmcmds.h:56
uint64_t featuresEnabled
Definition: farmcmds.h:68
uint64_t totalMechanicalStartRetries
Definition: farmcmds.h:127
uint64_t totalReadRecoveryAttepts
Definition: farmcmds.h:126
uint64_t cumulativeUnrecoverableReadUnique[24]
Definition: farmcmds.h:150
uint64_t totalUnrecoverableWriteErrors
Definition: farmcmds.h:124
uint64_t indexFlashLED
Definition: farmcmds.h:139
uint64_t totalASREvents
Definition: farmcmds.h:129
uint64_t uncorrectables
Definition: farmcmds.h:140
uint64_t totalCRCErrors
Definition: farmcmds.h:130
uint64_t totalReallocationCanidates
Definition: farmcmds.h:128
uint64_t reserved0[8]
Definition: farmcmds.h:143
uint64_t totalFlashLED
Definition: farmcmds.h:138
uint64_t attrSpinRetryCount
Definition: farmcmds.h:131
uint64_t powerCycleFlashLED[8]
Definition: farmcmds.h:147
uint64_t cumulativeUnrecoverableReadERC
Definition: farmcmds.h:148
uint64_t totalReallocations
Definition: farmcmds.h:125
uint64_t totalUnrecoverableReadErrors
Definition: farmcmds.h:123
uint64_t cumulativeUnrecoverableReadRepeating[24]
Definition: farmcmds.h:149
uint64_t attrIOEDCErrors
Definition: farmcmds.h:134
uint64_t worstSpinRretryCount
Definition: farmcmds.h:133
uint64_t universalTimestampFlashLED[8]
Definition: farmcmds.h:146
uint64_t normalSpinRetryCount
Definition: farmcmds.h:132
uint64_t overFiveSecCTO
Definition: farmcmds.h:136
uint64_t reserved1[2]
Definition: farmcmds.h:144
uint64_t overSevenSecCTO
Definition: farmcmds.h:137
uint64_t reserved2[15]
Definition: farmcmds.h:145
uint64_t flashLEDArray[8]
Definition: farmcmds.h:142
uint64_t minorRev
Definition: farmcmds.h:37
uint64_t pagesSupported
Definition: farmcmds.h:38
uint64_t signature
Definition: farmcmds.h:35
uint64_t majorRev
Definition: farmcmds.h:36
uint64_t copies
Definition: farmcmds.h:42
uint64_t pageSize
Definition: farmcmds.h:40
uint64_t headsSupported
Definition: farmcmds.h:41
uint64_t frameCapture
Definition: farmcmds.h:43
uint64_t logSize
Definition: farmcmds.h:39
ataFarmErrorStatistics error
Definition: farmcmds.h:266
ataFarmHeader header
Definition: farmcmds.h:263
ataFarmReliabilityStatistics reliability
Definition: farmcmds.h:268
ataFarmWorkloadStatistics workload
Definition: farmcmds.h:265
ataFarmEnvironmentStatistics environment
Definition: farmcmds.h:267
ataFarmDriveInformation driveInformation
Definition: farmcmds.h:264
int64_t RVGASkipWriteDetect[24]
Definition: farmcmds.h:215
int64_t secondMRHeadResistance[24]
Definition: farmcmds.h:251
uint64_t reserved24[24][3]
Definition: farmcmds.h:233
int64_t writeWorkloadPowerOnTime[24]
Definition: farmcmds.h:246
uint64_t reserved42[24][3]
Definition: farmcmds.h:256
uint64_t mrHeadResistance[24]
Definition: farmcmds.h:229
int64_t DVGASkipWriteDetect[24]
Definition: farmcmds.h:214
int64_t reallocatedSectors[24]
Definition: farmcmds.h:240
uint64_t reserved25[24][3]
Definition: farmcmds.h:234
int64_t FVGASkipWriteDetect[24]
Definition: farmcmds.h:216
uint64_t reserved41[24][3]
Definition: farmcmds.h:255
int64_t skipWriteDetectThresExceeded[24]
Definition: farmcmds.h:217
int64_t numberLBACorrectedParitySector
Definition: farmcmds.h:257
int64_t reallocationCandidates[24]
Definition: farmcmds.h:241
uint64_t reserved40[24][3]
Definition: farmcmds.h:254
int64_t reserved29[24][3]
Definition: farmcmds.h:238
uint64_t totalNumberofOtherCMDS
Definition: farmcmds.h:101
uint64_t writeCommandsByRadius1
Definition: farmcmds.h:111
uint64_t totalWriteCommands
Definition: farmcmds.h:98
uint64_t readCommandsByRadius1
Definition: farmcmds.h:107
uint64_t writeCommandsByRadius3
Definition: farmcmds.h:113
uint64_t writeCommandsByRadius4
Definition: farmcmds.h:114
uint64_t readCommandsByRadius3
Definition: farmcmds.h:109
uint64_t writeCommandsByRadius2
Definition: farmcmds.h:112
uint64_t totalReadCommands
Definition: farmcmds.h:97
uint64_t readCommandsByRadius4
Definition: farmcmds.h:110
uint64_t readCommandsByRadius2
Definition: farmcmds.h:108
scsiFarmParameterHeader parameterHeader
Definition: farmcmds.h:574
uint64_t flashLEDArray[8]
Definition: farmcmds.h:580
uint64_t powerCycleFlashLED[8]
Definition: farmcmds.h:582
uint64_t universalTimestampFlashLED[8]
Definition: farmcmds.h:581
uint64_t indexFlashLED
Definition: farmcmds.h:579
uint64_t totalFlashLED
Definition: farmcmds.h:578
scsiFarmParameterHeader parameterHeader
Definition: farmcmds.h:591
uint64_t actuatorID
Definition: farmcmds.h:545
uint64_t numberSlippedSectorsBeforeIDD
Definition: farmcmds.h:553
uint64_t reserved2
Definition: farmcmds.h:563
uint64_t lbasCorrectedISP
Definition: farmcmds.h:560
uint64_t pageNumber
Definition: farmcmds.h:543
scsiFarmParameterHeader parameterHeader
Definition: farmcmds.h:542
uint64_t numberResidentReallocatedAfterIDD
Definition: farmcmds.h:556
uint64_t headLoadEvents
Definition: farmcmds.h:546
uint64_t subcommandlastIDDTest
Definition: farmcmds.h:550
uint64_t numberScrubbedSectorsAfterIDD
Definition: farmcmds.h:558
uint64_t numberLBACorrectedParitySector
Definition: farmcmds.h:565
uint64_t dosScansPerformed
Definition: farmcmds.h:559
uint64_t numberResidentReallocatedBeforeIDD
Definition: farmcmds.h:555
uint64_t numberScrubbedSectorsBeforeIDD
Definition: farmcmds.h:557
uint64_t reserved
Definition: farmcmds.h:547
uint64_t reserved1
Definition: farmcmds.h:562
uint64_t reserved0
Definition: farmcmds.h:548
uint64_t numberGListReclam
Definition: farmcmds.h:551
uint64_t numberValidParitySectors
Definition: farmcmds.h:561
uint64_t servoStatus
Definition: farmcmds.h:552
uint64_t copyNumber
Definition: farmcmds.h:544
uint64_t reserved3
Definition: farmcmds.h:564
uint64_t numberSlippedSectorsAfterIDD
Definition: farmcmds.h:554
uint64_t timelastIDDTest
Definition: farmcmds.h:549
uint64_t headValue[20]
Definition: farmcmds.h:533
scsiFarmParameterHeader parameterHeader
Definition: farmcmds.h:532
uint64_t depopulationHeadMask
Definition: farmcmds.h:496
uint64_t maxNumberForReasign
Definition: farmcmds.h:503
scsiFarmParameterHeader parameterHeader
Definition: farmcmds.h:493
uint64_t lastServoSpinUpTime
Definition: farmcmds.h:506
scsiFarmParameterHeader parameterHeader
Definition: farmcmds.h:315
scsiFarmParameterHeader parameterHeader
Definition: farmcmds.h:515
scsiFarmParameterHeader parameterHeader
Definition: farmcmds.h:420
uint64_t disparityErrorCodeA
Definition: farmcmds.h:406
uint64_t lossOfDWordSyncA
Definition: farmcmds.h:408
uint64_t phyResetProblemA
Definition: farmcmds.h:410
uint64_t disparityErrorCodeB
Definition: farmcmds.h:407
uint64_t invalidDWordCountB
Definition: farmcmds.h:405
uint64_t totalUnrecoverableWriteErrors
Definition: farmcmds.h:386
uint64_t invalidDWordCountA
Definition: farmcmds.h:404
scsiFarmParameterHeader parameterHeader
Definition: farmcmds.h:382
uint64_t lossOfDWordSyncB
Definition: farmcmds.h:409
uint64_t totalMechanicalStartRetries
Definition: farmcmds.h:389
uint64_t phyResetProblemB
Definition: farmcmds.h:411
uint64_t totalUnrecoverableReadErrors
Definition: farmcmds.h:385
uint64_t minorRev
Definition: farmcmds.h:300
uint64_t headsSupported
Definition: farmcmds.h:304
uint64_t parametersSupported
Definition: farmcmds.h:301
uint64_t majorRev
Definition: farmcmds.h:299
uint64_t reserved0
Definition: farmcmds.h:305
uint64_t frameCapture
Definition: farmcmds.h:306
scsiFarmParameterHeader parameterHeader
Definition: farmcmds.h:297
uint64_t reserved
Definition: farmcmds.h:303
uint64_t logSize
Definition: farmcmds.h:302
uint64_t signature
Definition: farmcmds.h:298
scsiFarmByActuator actuator0
Definition: farmcmds.h:660
scsiFarmByHead reserved15
Definition: farmcmds.h:632
scsiFarmByHead reserved9
Definition: farmcmds.h:624
scsiFarmByHead totalReallocations
Definition: farmcmds.h:630
scsiFarmByHead reserved4
Definition: farmcmds.h:618
scsiFarmByHead reserved3
Definition: farmcmds.h:617
scsiFarmByHead reserved6
Definition: farmcmds.h:620
scsiFarmByHead reserved20
Definition: farmcmds.h:640
scsiFarmPageHeader pageHeader
Definition: farmcmds.h:604
scsiFarmByHead reserved11
Definition: farmcmds.h:626
scsiFarmByHead reserved2
Definition: farmcmds.h:616
scsiFarmByHead reserved10
Definition: farmcmds.h:625
scsiFarmByHead reserved35
Definition: farmcmds.h:656
scsiFarmHeader header
Definition: farmcmds.h:605
scsiFarmByHead reserved36
Definition: farmcmds.h:657
scsiFarmByHead reserved31
Definition: farmcmds.h:652
scsiFarmByHead reserved5
Definition: farmcmds.h:619
scsiFarmByHead reserved16
Definition: farmcmds.h:633
scsiFarmDriveInformation2 driveInformation2
Definition: farmcmds.h:611
scsiFarmByHead reserved17
Definition: farmcmds.h:634
scsiFarmByHead reserved23
Definition: farmcmds.h:643
scsiFarmByHead reserved38
Definition: farmcmds.h:659
scsiFarmByHead reserved30
Definition: farmcmds.h:651
scsiFarmByHead reserved0
Definition: farmcmds.h:614
scsiFarmByHead totalReallocationCanidates
Definition: farmcmds.h:631
scsiFarmByHead reserved25
Definition: farmcmds.h:645
scsiFarmByHead reserved24
Definition: farmcmds.h:644
scsiFarmByHead reserved19
Definition: farmcmds.h:639
scsiFarmByHead cumulativeUnrecoverableReadUnique
Definition: farmcmds.h:638
scsiFarmByActuatorReallocation actuatorReallocation1
Definition: farmcmds.h:665
scsiFarmEnvironmentStatistics2 environment2
Definition: farmcmds.h:612
scsiFarmReliabilityStatistics reliability
Definition: farmcmds.h:610
scsiFarmByHead reserved27
Definition: farmcmds.h:647
scsiFarmDriveInformation driveInformation
Definition: farmcmds.h:606
scsiFarmByHead reserved
Definition: farmcmds.h:613
scsiFarmByHead reserved21
Definition: farmcmds.h:641
scsiFarmByActuator actuator1
Definition: farmcmds.h:663
scsiFarmByHead reserved29
Definition: farmcmds.h:650
scsiFarmByHead writeWorkloadPowerOnTime
Definition: farmcmds.h:635
scsiFarmEnvironmentStatistics environment
Definition: farmcmds.h:609
scsiFarmByHead reserved26
Definition: farmcmds.h:646
scsiFarmWorkloadStatistics workload
Definition: farmcmds.h:607
scsiFarmByHead reserved8
Definition: farmcmds.h:622
scsiFarmByActuatorFLED actuatorFLED1
Definition: farmcmds.h:664
scsiFarmByHead secondMRHeadResistance
Definition: farmcmds.h:648
scsiFarmByActuatorReallocation actuatorReallocation2
Definition: farmcmds.h:668
scsiFarmByActuatorFLED actuatorFLED0
Definition: farmcmds.h:661
scsiFarmByHead cumulativeUnrecoverableReadRepeat
Definition: farmcmds.h:637
scsiFarmByHead reserved14
Definition: farmcmds.h:629
scsiFarmByActuatorReallocation actuatorReallocation0
Definition: farmcmds.h:662
scsiFarmByActuator actuator3
Definition: farmcmds.h:669
scsiFarmByHead reserved1
Definition: farmcmds.h:615
scsiFarmByHead reserved7
Definition: farmcmds.h:621
scsiFarmErrorStatistics error
Definition: farmcmds.h:608
scsiFarmByHead reserved37
Definition: farmcmds.h:658
scsiFarmByActuatorReallocation actuatorReallocation3
Definition: farmcmds.h:671
scsiFarmByHead reserved13
Definition: farmcmds.h:628
scsiFarmByHead reserved18
Definition: farmcmds.h:636
scsiFarmByHead reserved32
Definition: farmcmds.h:653
scsiFarmByHead reserved22
Definition: farmcmds.h:642
scsiFarmByHead reserved33
Definition: farmcmds.h:654
scsiFarmByActuator actuator2
Definition: farmcmds.h:666
scsiFarmByHead reserved12
Definition: farmcmds.h:627
scsiFarmByHead reserved28
Definition: farmcmds.h:649
scsiFarmByHead mrHeadResistance
Definition: farmcmds.h:623
scsiFarmByActuatorFLED actuatorFLED2
Definition: farmcmds.h:667
scsiFarmByHead reserved34
Definition: farmcmds.h:655
scsiFarmByActuatorFLED actuatorFLED3
Definition: farmcmds.h:670
uint8_t subpageCode
Definition: farmcmds.h:279
uint16_t pageLength
Definition: farmcmds.h:280
uint8_t pageCode
Definition: farmcmds.h:278
scsiFarmParameterHeader parameterHeader
Definition: farmcmds.h:455
uint64_t writeCommandsByRadius3
Definition: farmcmds.h:372
uint64_t writeCommandsByRadius1
Definition: farmcmds.h:370
uint64_t writeCommandsByRadius4
Definition: farmcmds.h:373
uint64_t writeCommandsByRadius2
Definition: farmcmds.h:371
uint64_t readCommandsByRadius1
Definition: farmcmds.h:366
uint64_t readCommandsByRadius3
Definition: farmcmds.h:368
uint64_t totalNumberofOtherCMDS
Definition: farmcmds.h:363
scsiFarmParameterHeader parameterHeader
Definition: farmcmds.h:355
uint64_t readCommandsByRadius2
Definition: farmcmds.h:367
uint64_t readCommandsByRadius4
Definition: farmcmds.h:369