Print this page
8074 need to add FMA event for SSD wearout

@@ -19,17 +19,16 @@
  * CDDL HEADER END
  */
 /*
  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
+ * Copyright 2016 Nexenta Systems, Inc.  All rights reserved.
  */
 
 #ifndef _DS_SCSI_H
 #define _DS_SCSI_H
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include <sys/types.h>
 #include <sys/byteorder.h>
 #include <sys/scsi/scsi.h>
 
 #include "ds_impl.h"

@@ -48,16 +47,18 @@
 #pragma pack(1)
 
 typedef struct scsi_log_header {
 #if defined(_BIT_FIELDS_LTOH)
         uint8_t         lh_code : 6,
-                        __reserved : 2;
+                        lh_spf : 1,
+                        lh_ds : 1;
 #else
-        uint8_t         __reserved : 2,
+        uint8_t         lh_ds : 1,
+                        lh_spf : 1,
                         lh_code : 6;
 #endif
-        uint8_t         __reserved2;
+        uint8_t         lh_subpage;
         uint16_t        lh_length;
 } scsi_log_header_t;
 
 typedef struct scsi_log_parameter_header {
         uint16_t        lph_param;

@@ -156,10 +157,24 @@
 #define LOGPARAM_TEMP_LEN       \
         (sizeof (scsi_temp_log_param_t) - \
             sizeof (scsi_log_parameter_header_t))
 
 /*
+ * Described in SBC3
+ */
+typedef struct scsi_ssm_log_param {
+        scsi_log_parameter_header_t ssm_hdr;
+        uint16_t                __reserved2;
+        uint8_t                 __reserved1;
+        uchar_t                 ssm_prcnt_used;
+} scsi_ssm_log_param_t;
+
+#define LOGPARAM_PRCNT_USED             0x0001
+#define LOGPARAM_PRCNT_USED_PARAM_LEN   0x04
+#define PRCNT_USED_FAULT_THRSH          90
+
+/*
  * Mode sense/select page header information
  */
 typedef struct scsi_ms_header {
         struct mode_header      ms_header;
         struct block_descriptor ms_descriptor;

@@ -276,10 +291,12 @@
  */
 #define LOGPAGE_SUPP_LIST       0x00
 #define LOGPAGE_TEMP            0x0d
 #define LOGPAGE_SELFTEST        0x10
 #define LOGPAGE_IE              0x2f
+/* Solid State Media log page code */
+#define LOGPAGE_SSM             0x11
 
 /* ASC constants */
 #define ASC_INVALID_OPCODE                              0x20
 #define ASC_INVALID_CDB_FIELD                           0x24
 #define ASC_FAILURE_PREDICTION_THRESHOLD_EXCEEDED       0x5d

@@ -305,10 +322,11 @@
 
 /* supported logpages bitmask */
 #define LOGPAGE_SUPP_IE                 0x1
 #define LOGPAGE_SUPP_TEMP               0x2
 #define LOGPAGE_SUPP_SELFTEST           0x4
+#define LOGPAGE_SUPP_SSM                0x8
 
 #define MSG_BUFLEN      256
 
 /*
  * For SCSI commands which want to accept arbitrary length responses, we need to