smartmontools  SVN Rev 4735
Utility to control and monitor storage systems with "S.M.A.R.T."
Classes | Macros | Functions | Variables
scsicmds.h File Reference
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
Include dependency graph for scsicmds.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  scsi_cmnd_io
 
struct  scsi_sense_disect
 
struct  scsi_iec_mode_page
 
struct  scsiErrorCounter
 
struct  scsiNonMediumError
 
struct  scsi_readcap_resp
 
class  supported_vpd_pages
 

Macros

#define SCSICMDS_H_CVSID   "$Id: scsicmds.h 4683 2018-01-07 22:46:30Z dpgilbert $\n"
 
#define TEST_UNIT_READY   0x0
 
#define LOG_SELECT   0x4c
 
#define LOG_SENSE   0x4d
 
#define MODE_SENSE   0x1a
 
#define MODE_SENSE_10   0x5a
 
#define MODE_SELECT   0x15
 
#define MODE_SELECT_10   0x55
 
#define INQUIRY   0x12
 
#define REQUEST_SENSE   0x03
 
#define RECEIVE_DIAGNOSTIC   0x1c
 
#define SEND_DIAGNOSTIC   0x1d
 
#define READ_DEFECT_10   0x37
 
#define READ_DEFECT_12   0xb7
 
#define START_STOP_UNIT   0x1b
 
#define REPORT_LUNS   0xa0
 
#define READ_CAPACITY_10   0x25
 
#define READ_CAPACITY_16   0x9e
 
#define SAI_READ_CAPACITY_16   0x10
 
#define SAT_ATA_PASSTHROUGH_12   0xa1
 
#define SAT_ATA_PASSTHROUGH_16   0x85
 
#define DXFER_NONE   0
 
#define DXFER_FROM_DEVICE   1
 
#define DXFER_TO_DEVICE   2
 
#define SCSI_IECMP_RAW_LEN   64
 
#define SCSI_PT_DIRECT_ACCESS   0x0
 
#define SCSI_PT_SEQUENTIAL_ACCESS   0x1
 
#define SCSI_PT_CDROM   0x5
 
#define SCSI_PT_MEDIUM_CHANGER   0x8
 
#define SCSI_PT_ENCLOSURE   0xd
 
#define SCSI_TPROTO_FCP   0
 
#define SCSI_TPROTO_SPI   1
 
#define SCSI_TPROTO_SSA   2
 
#define SCSI_TPROTO_1394   3
 
#define SCSI_TPROTO_SRP   4 /* SCSI over RDMA */
 
#define SCSI_TPROTO_ISCSI   5
 
#define SCSI_TPROTO_SAS   6
 
#define SCSI_TPROTO_ADT   7
 
#define SCSI_TPROTO_ATA   8
 
#define SCSI_TPROTO_UAS   9 /* USB attached SCSI */
 
#define SCSI_TPROTO_SOP   0xa /* SCSI over PCIe */
 
#define SCSI_TPROTO_PCIE   0xb /* includes NVMe */
 
#define SCSI_TPROTO_NONE   0xf
 
#define SUPPORTED_LPAGES   0x00
 
#define BUFFER_OVERRUN_LPAGE   0x01
 
#define WRITE_ERROR_COUNTER_LPAGE   0x02
 
#define READ_ERROR_COUNTER_LPAGE   0x03
 
#define READ_REVERSE_ERROR_COUNTER_LPAGE   0x04
 
#define VERIFY_ERROR_COUNTER_LPAGE   0x05
 
#define NON_MEDIUM_ERROR_LPAGE   0x06
 
#define LAST_N_ERROR_EVENTS_LPAGE   0x07
 
#define FORMAT_STATUS_LPAGE   0x08
 
#define LAST_N_DEFERRED_LPAGE   0x0b /* or async events */
 
#define LB_PROV_LPAGE   0x0c /* SBC-3 */
 
#define TEMPERATURE_LPAGE   0x0d
 
#define STARTSTOP_CYCLE_COUNTER_LPAGE   0x0e
 
#define APPLICATION_CLIENT_LPAGE   0x0f
 
#define SELFTEST_RESULTS_LPAGE   0x10
 
#define SS_MEDIA_LPAGE   0x11 /* SBC-3 */
 
#define BACKGROUND_RESULTS_LPAGE   0x15 /* SBC-3 */
 
#define ATA_PT_RESULTS_LPAGE   0x16 /* SAT */
 
#define NONVOL_CACHE_LPAGE   0x17 /* SBC-3 */
 
#define PROTOCOL_SPECIFIC_LPAGE   0x18
 
#define GEN_STATS_PERF_LPAGE   0x19
 
#define POWER_COND_TRANS_LPAGE   0x1a
 
#define IE_LPAGE   0x2f
 
#define NO_SUBPAGE_L_SPAGE   0x0 /* 0x0-0x3f,0x0 */
 
#define LAST_N_INQ_DAT_L_SPAGE   0x1 /* 0xb,0x1 */
 
#define LAST_N_MODE_PG_L_SPAGE   0x2 /* 0xb,0x2 */
 
#define ENVIRO_REP_L_SPAGE   0x1 /* 0xd,0x1 */
 
#define ENVIRO_LIMITS_L_SPAGE   0x2 /* 0xd,0x2 */
 
#define UTILIZATION_L_SPAGE   0x1 /* 0xe,0x1 */
 
#define ZB_DEV_STATS_L_SPAGE   0x1 /* 0x14,0x1 */
 
#define PEND_DEFECTS_L_SPAGE   0x1 /* 0x15,0x1 */
 
#define BACKGROUND_OP_L_SPAGE   0x2 /* 0x15,0x2 */
 
#define LPS_MISALIGN_L_SPAGE   0x3 /* 0x15,0x3 */
 
#define SUPP_SPAGE_L_SPAGE   0xff /* 0x0,0xff pages+subpages */
 
#define SEAGATE_CACHE_LPAGE   0x37
 
#define SEAGATE_FACTORY_LPAGE   0x3e
 
#define LOG_RESP_SELF_TEST_LEN   0x194
 
#define TAPE_ALERTS_LPAGE   0x2e
 
#define VENDOR_UNIQUE_PAGE   0x00
 
#define READ_WRITE_ERROR_RECOVERY_PAGE   0x01
 
#define DISCONNECT_RECONNECT_PAGE   0x02
 
#define FORMAT_DEVICE_PAGE   0x03
 
#define RIGID_DISK_DRIVE_GEOMETRY_PAGE   0x04
 
#define FLEXIBLE_DISK_PAGE   0x05
 
#define VERIFY_ERROR_RECOVERY_PAGE   0x07
 
#define CACHING_PAGE   0x08
 
#define PERIPHERAL_DEVICE_PAGE   0x09
 
#define XOR_CONTROL_MODE_PAGE   0x10
 
#define CONTROL_MODE_PAGE   0x0a
 
#define MEDIUM_TYPES_SUPPORTED_PAGE   0x0b
 
#define NOTCH_PAGE   0x0c
 
#define CD_DEVICE_PAGE   0x0d
 
#define CD_AUDIO_CONTROL_PAGE   0x0e
 
#define DATA_COMPRESSION_PAGE   0x0f
 
#define ENCLOSURE_SERVICES_MANAGEMENT_PAGE   0x14
 
#define PROTOCOL_SPECIFIC_LUN_PAGE   0x18
 
#define PROTOCOL_SPECIFIC_PORT_PAGE   0x19
 
#define POWER_CONDITION_PAGE   0x1a
 
#define INFORMATIONAL_EXCEPTIONS_CONTROL_PAGE   0x1c
 
#define FAULT_FAILURE_REPORTING_PAGE   0x1c
 
#define BACKGROUND_CONTROL_M_SUBPAGE   0x1 /* SBC-2 */
 
#define ALL_MODE_PAGES   0x3f
 
#define MPAGE_CONTROL_CURRENT   0
 
#define MPAGE_CONTROL_CHANGEABLE   1
 
#define MPAGE_CONTROL_DEFAULT   2
 
#define MPAGE_CONTROL_SAVED   3
 
#define SCSI_VPD_SUPPORTED_VPD_PAGES   0x0
 
#define SCSI_VPD_UNIT_SERIAL_NUMBER   0x80
 
#define SCSI_VPD_DEVICE_IDENTIFICATION   0x83
 
#define SCSI_VPD_EXTENDED_INQUIRY_DATA   0x86
 
#define SCSI_VPD_ATA_INFORMATION   0x89
 
#define SCSI_VPD_POWER_CONDITION   0x8a
 
#define SCSI_VPD_POWER_CONSUMPTION   0x8d
 
#define SCSI_VPD_BLOCK_LIMITS   0xb0
 
#define SCSI_VPD_BLOCK_DEVICE_CHARACTERISTICS   0xb1
 
#define SCSI_VPD_LOGICAL_BLOCK_PROVISIONING   0xb2
 
#define SCSI_STATUS_CHECK_CONDITION   0x2
 
#define SCSI_SK_NO_SENSE   0x0
 
#define SCSI_SK_RECOVERED_ERR   0x1
 
#define SCSI_SK_NOT_READY   0x2
 
#define SCSI_SK_MEDIUM_ERROR   0x3
 
#define SCSI_SK_HARDWARE_ERROR   0x4
 
#define SCSI_SK_ILLEGAL_REQUEST   0x5
 
#define SCSI_SK_UNIT_ATTENTION   0x6
 
#define SCSI_SK_ABORTED_COMMAND   0xb
 
#define SCSI_ASC_NOT_READY   0x4 /* more info in ASCQ code */
 
#define SCSI_ASC_NO_MEDIUM   0x3a /* more info in ASCQ code */
 
#define SCSI_ASC_UNKNOWN_OPCODE   0x20
 
#define SCSI_ASC_INVALID_FIELD   0x24
 
#define SCSI_ASC_UNKNOWN_PARAM   0x26
 
#define SCSI_ASC_WARNING   0xb
 
#define SCSI_ASC_IMPENDING_FAILURE   0x5d
 
#define SCSI_ASCQ_ATA_PASS_THROUGH   0x1d
 
#define SIMPLE_NO_ERROR   0
 
#define SIMPLE_ERR_NOT_READY   1
 
#define SIMPLE_ERR_BAD_OPCODE   2
 
#define SIMPLE_ERR_BAD_FIELD   3 /* in cbd */
 
#define SIMPLE_ERR_BAD_PARAM   4 /* in data */
 
#define SIMPLE_ERR_BAD_RESP   5 /* response fails sanity */
 
#define SIMPLE_ERR_NO_MEDIUM   6 /* no medium present */
 
#define SIMPLE_ERR_BECOMING_READY   7 /* device will be ready soon */
 
#define SIMPLE_ERR_TRY_AGAIN   8 /* some warning, try again */
 
#define SIMPLE_ERR_MEDIUM_HARDWARE   9 /* medium or hardware error */
 
#define SIMPLE_ERR_UNKNOWN   10 /* unknown sense value */
 
#define SIMPLE_ERR_ABORTED_COMMAND   11 /* probably transport error */
 
#define SCSI_DIAG_NO_SELF_TEST   0x00
 
#define SCSI_DIAG_DEF_SELF_TEST   0xff
 
#define SCSI_DIAG_BG_SHORT_SELF_TEST   0x01
 
#define SCSI_DIAG_BG_EXTENDED_SELF_TEST   0x02
 
#define SCSI_DIAG_FG_SHORT_SELF_TEST   0x05
 
#define SCSI_DIAG_FG_EXTENDED_SELF_TEST   0x06
 
#define SCSI_DIAG_ABORT_SELF_TEST   0x04
 
#define SCSI_TIMEOUT_DEFAULT   60
 
#define SCSI_TIMEOUT_SELF_TEST   (5 * 60 * 60) /* allow max 5 hours for */
 
#define LOGPAGEHDRSIZE   4
 

Functions

bool is_scsi_cdb (const uint8_t *cdbp, int clen)
 
void scsi_do_sense_disect (const struct scsi_cmnd_io *in, struct scsi_sense_disect *out)
 
int scsiSimpleSenseFilter (const struct scsi_sense_disect *sinfo)
 
const char * scsiErrString (int scsiErr)
 
int scsi_vpd_dev_id_iter (const unsigned char *initial_desig_desc, int page_len, int *off, int m_assoc, int m_desig_type, int m_code_set)
 
int scsi_decode_lu_dev_id (const unsigned char *b, int blen, char *s, int slen, int *transport)
 
int scsiTestUnitReady (scsi_device *device)
 
int scsiStdInquiry (scsi_device *device, uint8_t *pBuf, int bufLen)
 
int scsiInquiryVpd (scsi_device *device, int vpd_page, uint8_t *pBuf, int bufLen)
 
int scsiLogSense (scsi_device *device, int pagenum, int subpagenum, uint8_t *pBuf, int bufLen, int known_resp_len)
 
int scsiLogSelect (scsi_device *device, int pcr, int sp, int pc, int pagenum, int subpagenum, uint8_t *pBuf, int bufLen)
 
int scsiModeSense (scsi_device *device, int pagenum, int subpagenum, int pc, uint8_t *pBuf, int bufLen)
 
int scsiModeSelect (scsi_device *device, int sp, uint8_t *pBuf, int bufLen)
 
int scsiModeSense10 (scsi_device *device, int pagenum, int subpagenum, int pc, uint8_t *pBuf, int bufLen)
 
int scsiModeSelect10 (scsi_device *device, int sp, uint8_t *pBuf, int bufLen)
 
int scsiModePageOffset (const uint8_t *resp, int len, int modese_len)
 
int scsiRequestSense (scsi_device *device, struct scsi_sense_disect *sense_info)
 
int scsiSendDiagnostic (scsi_device *device, int functioncode, uint8_t *pBuf, int bufLen)
 
int scsiReadDefect10 (scsi_device *device, int req_plist, int req_glist, int dl_format, uint8_t *pBuf, int bufLen)
 
int scsiReadDefect12 (scsi_device *device, int req_plist, int req_glist, int dl_format, int addrDescIndex, uint8_t *pBuf, int bufLen)
 
int scsiReadCapacity10 (scsi_device *device, unsigned int *last_lbp, unsigned int *lb_sizep)
 
int scsiReadCapacity16 (scsi_device *device, uint8_t *pBuf, int bufLen)
 
int scsiCheckIE (scsi_device *device, int hasIELogPage, int hasTempLogPage, uint8_t *asc, uint8_t *ascq, uint8_t *currenttemp, uint8_t *triptemp)
 
int scsiFetchIECmpage (scsi_device *device, struct scsi_iec_mode_page *iecp, int modese_len)
 
int scsi_IsExceptionControlEnabled (const struct scsi_iec_mode_page *iecp)
 
int scsi_IsWarningEnabled (const struct scsi_iec_mode_page *iecp)
 
int scsiSetExceptionControlAndWarning (scsi_device *device, int enabled, const struct scsi_iec_mode_page *iecp)
 
void scsiDecodeErrCounterPage (unsigned char *resp, struct scsiErrorCounter *ecp)
 
void scsiDecodeNonMediumErrPage (unsigned char *resp, struct scsiNonMediumError *nmep)
 
int scsiFetchExtendedSelfTestTime (scsi_device *device, int *durationSec, int modese_len)
 
int scsiCountFailedSelfTests (scsi_device *device, int noisy)
 
int scsiSelfTestInProgress (scsi_device *device, int *inProgress)
 
int scsiFetchControlGLTSD (scsi_device *device, int modese_len, int current)
 
int scsiSetControlGLTSD (scsi_device *device, int enabled, int modese_len)
 
int scsiFetchTransportProtocol (scsi_device *device, int modese_len)
 
int scsiGetRPM (scsi_device *device, int modese_len, int *form_factorp, int *haw_zbcp)
 
int scsiGetSetCache (scsi_device *device, int modese_len, short int *wce, short int *rcd)
 
uint64_t scsiGetSize (scsi_device *device, bool avoid_rcap16, struct scsi_readcap_resp *srrp)
 
const char * scsiGetIEString (uint8_t asc, uint8_t ascq)
 
int scsiGetTemp (scsi_device *device, uint8_t *currenttemp, uint8_t *triptemp)
 
int scsiSmartDefaultSelfTest (scsi_device *device)
 
int scsiSmartShortSelfTest (scsi_device *device)
 
int scsiSmartExtendSelfTest (scsi_device *device)
 
int scsiSmartShortCapSelfTest (scsi_device *device)
 
int scsiSmartExtendCapSelfTest (scsi_device *device)
 
int scsiSmartSelfTestAbort (scsi_device *device)
 
const char * scsiTapeAlertsTapeDevice (unsigned short code)
 
const char * scsiTapeAlertsChangerDevice (unsigned short code)
 
const char * scsi_get_opcode_name (uint8_t opcode)
 
void scsi_format_id_string (char *out, const uint8_t *in, int n)
 
void dStrHex (const uint8_t *up, int len, int no_ascii)
 
const unsigned char * sg_scsi_sense_desc_find (const unsigned char *sensep, int sense_len, int desc_type)
 

Variables

supported_vpd_pagessupported_vpd_pages_p
 
unsigned char scsi_debugmode
 

Macro Definition Documentation

#define ALL_MODE_PAGES   0x3f

Definition at line 280 of file scsicmds.h.

#define APPLICATION_CLIENT_LPAGE   0x0f

Definition at line 218 of file scsicmds.h.

#define ATA_PT_RESULTS_LPAGE   0x16 /* SAT */

Definition at line 222 of file scsicmds.h.

#define BACKGROUND_CONTROL_M_SUBPAGE   0x1 /* SBC-2 */

Definition at line 278 of file scsicmds.h.

#define BACKGROUND_OP_L_SPAGE   0x2 /* 0x15,0x2 */

Definition at line 238 of file scsicmds.h.

#define BACKGROUND_RESULTS_LPAGE   0x15 /* SBC-3 */

Definition at line 221 of file scsicmds.h.

#define BUFFER_OVERRUN_LPAGE   0x01

Definition at line 206 of file scsicmds.h.

#define CACHING_PAGE   0x08

Definition at line 261 of file scsicmds.h.

#define CD_AUDIO_CONTROL_PAGE   0x0e

Definition at line 268 of file scsicmds.h.

#define CD_DEVICE_PAGE   0x0d

Definition at line 267 of file scsicmds.h.

#define CONTROL_MODE_PAGE   0x0a

Definition at line 264 of file scsicmds.h.

#define DATA_COMPRESSION_PAGE   0x0f

Definition at line 269 of file scsicmds.h.

#define DISCONNECT_RECONNECT_PAGE   0x02

Definition at line 256 of file scsicmds.h.

#define DXFER_FROM_DEVICE   1

Definition at line 108 of file scsicmds.h.

#define DXFER_NONE   0

Definition at line 107 of file scsicmds.h.

#define DXFER_TO_DEVICE   2

Definition at line 109 of file scsicmds.h.

#define ENCLOSURE_SERVICES_MANAGEMENT_PAGE   0x14

Definition at line 270 of file scsicmds.h.

#define ENVIRO_LIMITS_L_SPAGE   0x2 /* 0xd,0x2 */

Definition at line 234 of file scsicmds.h.

#define ENVIRO_REP_L_SPAGE   0x1 /* 0xd,0x1 */

Definition at line 233 of file scsicmds.h.

#define FAULT_FAILURE_REPORTING_PAGE   0x1c

Definition at line 275 of file scsicmds.h.

#define FLEXIBLE_DISK_PAGE   0x05

Definition at line 259 of file scsicmds.h.

#define FORMAT_DEVICE_PAGE   0x03

Definition at line 257 of file scsicmds.h.

#define FORMAT_STATUS_LPAGE   0x08

Definition at line 213 of file scsicmds.h.

#define GEN_STATS_PERF_LPAGE   0x19

Definition at line 225 of file scsicmds.h.

#define IE_LPAGE   0x2f

Definition at line 227 of file scsicmds.h.

#define INFORMATIONAL_EXCEPTIONS_CONTROL_PAGE   0x1c

Definition at line 274 of file scsicmds.h.

#define INQUIRY   0x12

Definition at line 66 of file scsicmds.h.

#define LAST_N_DEFERRED_LPAGE   0x0b /* or async events */

Definition at line 214 of file scsicmds.h.

#define LAST_N_ERROR_EVENTS_LPAGE   0x07

Definition at line 212 of file scsicmds.h.

#define LAST_N_INQ_DAT_L_SPAGE   0x1 /* 0xb,0x1 */

Definition at line 231 of file scsicmds.h.

#define LAST_N_MODE_PG_L_SPAGE   0x2 /* 0xb,0x2 */

Definition at line 232 of file scsicmds.h.

#define LB_PROV_LPAGE   0x0c /* SBC-3 */

Definition at line 215 of file scsicmds.h.

#define LOG_RESP_SELF_TEST_LEN   0x194

Definition at line 247 of file scsicmds.h.

#define LOG_SELECT   0x4c

Definition at line 48 of file scsicmds.h.

#define LOG_SENSE   0x4d

Definition at line 51 of file scsicmds.h.

#define LOGPAGEHDRSIZE   4

Definition at line 358 of file scsicmds.h.

#define LPS_MISALIGN_L_SPAGE   0x3 /* 0x15,0x3 */

Definition at line 239 of file scsicmds.h.

#define MEDIUM_TYPES_SUPPORTED_PAGE   0x0b

Definition at line 265 of file scsicmds.h.

#define MODE_SELECT   0x15

Definition at line 60 of file scsicmds.h.

#define MODE_SELECT_10   0x55

Definition at line 63 of file scsicmds.h.

#define MODE_SENSE   0x1a

Definition at line 54 of file scsicmds.h.

#define MODE_SENSE_10   0x5a

Definition at line 57 of file scsicmds.h.

#define MPAGE_CONTROL_CHANGEABLE   1

Definition at line 284 of file scsicmds.h.

#define MPAGE_CONTROL_CURRENT   0

Definition at line 283 of file scsicmds.h.

#define MPAGE_CONTROL_DEFAULT   2

Definition at line 285 of file scsicmds.h.

#define MPAGE_CONTROL_SAVED   3

Definition at line 286 of file scsicmds.h.

#define NO_SUBPAGE_L_SPAGE   0x0 /* 0x0-0x3f,0x0 */

Definition at line 230 of file scsicmds.h.

#define NON_MEDIUM_ERROR_LPAGE   0x06

Definition at line 211 of file scsicmds.h.

#define NONVOL_CACHE_LPAGE   0x17 /* SBC-3 */

Definition at line 223 of file scsicmds.h.

#define NOTCH_PAGE   0x0c

Definition at line 266 of file scsicmds.h.

#define PEND_DEFECTS_L_SPAGE   0x1 /* 0x15,0x1 */

Definition at line 237 of file scsicmds.h.

#define PERIPHERAL_DEVICE_PAGE   0x09

Definition at line 262 of file scsicmds.h.

#define POWER_COND_TRANS_LPAGE   0x1a

Definition at line 226 of file scsicmds.h.

#define POWER_CONDITION_PAGE   0x1a

Definition at line 273 of file scsicmds.h.

#define PROTOCOL_SPECIFIC_LPAGE   0x18

Definition at line 224 of file scsicmds.h.

#define PROTOCOL_SPECIFIC_LUN_PAGE   0x18

Definition at line 271 of file scsicmds.h.

#define PROTOCOL_SPECIFIC_PORT_PAGE   0x19

Definition at line 272 of file scsicmds.h.

#define READ_CAPACITY_10   0x25

Definition at line 90 of file scsicmds.h.

#define READ_CAPACITY_16   0x9e

Definition at line 93 of file scsicmds.h.

#define READ_DEFECT_10   0x37

Definition at line 78 of file scsicmds.h.

#define READ_DEFECT_12   0xb7

Definition at line 81 of file scsicmds.h.

#define READ_ERROR_COUNTER_LPAGE   0x03

Definition at line 208 of file scsicmds.h.

#define READ_REVERSE_ERROR_COUNTER_LPAGE   0x04

Definition at line 209 of file scsicmds.h.

#define READ_WRITE_ERROR_RECOVERY_PAGE   0x01

Definition at line 255 of file scsicmds.h.

#define RECEIVE_DIAGNOSTIC   0x1c

Definition at line 72 of file scsicmds.h.

#define REPORT_LUNS   0xa0

Definition at line 87 of file scsicmds.h.

#define REQUEST_SENSE   0x03

Definition at line 69 of file scsicmds.h.

#define RIGID_DISK_DRIVE_GEOMETRY_PAGE   0x04

Definition at line 258 of file scsicmds.h.

#define SAI_READ_CAPACITY_16   0x10

Definition at line 96 of file scsicmds.h.

#define SAT_ATA_PASSTHROUGH_12   0xa1

Definition at line 100 of file scsicmds.h.

#define SAT_ATA_PASSTHROUGH_16   0x85

Definition at line 103 of file scsicmds.h.

#define SCSI_ASC_IMPENDING_FAILURE   0x5d

Definition at line 320 of file scsicmds.h.

#define SCSI_ASC_INVALID_FIELD   0x24

Definition at line 317 of file scsicmds.h.

#define SCSI_ASC_NO_MEDIUM   0x3a /* more info in ASCQ code */

Definition at line 315 of file scsicmds.h.

#define SCSI_ASC_NOT_READY   0x4 /* more info in ASCQ code */

Definition at line 314 of file scsicmds.h.

#define SCSI_ASC_UNKNOWN_OPCODE   0x20

Definition at line 316 of file scsicmds.h.

#define SCSI_ASC_UNKNOWN_PARAM   0x26

Definition at line 318 of file scsicmds.h.

#define SCSI_ASC_WARNING   0xb

Definition at line 319 of file scsicmds.h.

#define SCSI_ASCQ_ATA_PASS_THROUGH   0x1d

Definition at line 322 of file scsicmds.h.

#define SCSI_DIAG_ABORT_SELF_TEST   0x04

Definition at line 346 of file scsicmds.h.

#define SCSI_DIAG_BG_EXTENDED_SELF_TEST   0x02

Definition at line 343 of file scsicmds.h.

#define SCSI_DIAG_BG_SHORT_SELF_TEST   0x01

Definition at line 342 of file scsicmds.h.

#define SCSI_DIAG_DEF_SELF_TEST   0xff

Definition at line 341 of file scsicmds.h.

#define SCSI_DIAG_FG_EXTENDED_SELF_TEST   0x06

Definition at line 345 of file scsicmds.h.

#define SCSI_DIAG_FG_SHORT_SELF_TEST   0x05

Definition at line 344 of file scsicmds.h.

#define SCSI_DIAG_NO_SELF_TEST   0x00

Definition at line 340 of file scsicmds.h.

#define SCSI_IECMP_RAW_LEN   64

Definition at line 139 of file scsicmds.h.

#define SCSI_PT_CDROM   0x5

Definition at line 184 of file scsicmds.h.

#define SCSI_PT_DIRECT_ACCESS   0x0

Definition at line 182 of file scsicmds.h.

#define SCSI_PT_ENCLOSURE   0xd

Definition at line 186 of file scsicmds.h.

#define SCSI_PT_MEDIUM_CHANGER   0x8

Definition at line 185 of file scsicmds.h.

#define SCSI_PT_SEQUENTIAL_ACCESS   0x1

Definition at line 183 of file scsicmds.h.

#define SCSI_SK_ABORTED_COMMAND   0xb

Definition at line 311 of file scsicmds.h.

#define SCSI_SK_HARDWARE_ERROR   0x4

Definition at line 308 of file scsicmds.h.

#define SCSI_SK_ILLEGAL_REQUEST   0x5

Definition at line 309 of file scsicmds.h.

#define SCSI_SK_MEDIUM_ERROR   0x3

Definition at line 307 of file scsicmds.h.

#define SCSI_SK_NO_SENSE   0x0

Definition at line 304 of file scsicmds.h.

#define SCSI_SK_NOT_READY   0x2

Definition at line 306 of file scsicmds.h.

#define SCSI_SK_RECOVERED_ERR   0x1

Definition at line 305 of file scsicmds.h.

#define SCSI_SK_UNIT_ATTENTION   0x6

Definition at line 310 of file scsicmds.h.

#define SCSI_STATUS_CHECK_CONDITION   0x2

Definition at line 301 of file scsicmds.h.

#define SCSI_TIMEOUT_DEFAULT   60

Definition at line 350 of file scsicmds.h.

#define SCSI_TIMEOUT_SELF_TEST   (5 * 60 * 60) /* allow max 5 hours for */

Definition at line 353 of file scsicmds.h.

#define SCSI_TPROTO_1394   3

Definition at line 192 of file scsicmds.h.

#define SCSI_TPROTO_ADT   7

Definition at line 196 of file scsicmds.h.

#define SCSI_TPROTO_ATA   8

Definition at line 197 of file scsicmds.h.

#define SCSI_TPROTO_FCP   0

Definition at line 189 of file scsicmds.h.

#define SCSI_TPROTO_ISCSI   5

Definition at line 194 of file scsicmds.h.

#define SCSI_TPROTO_NONE   0xf

Definition at line 201 of file scsicmds.h.

#define SCSI_TPROTO_PCIE   0xb /* includes NVMe */

Definition at line 200 of file scsicmds.h.

#define SCSI_TPROTO_SAS   6

Definition at line 195 of file scsicmds.h.

#define SCSI_TPROTO_SOP   0xa /* SCSI over PCIe */

Definition at line 199 of file scsicmds.h.

#define SCSI_TPROTO_SPI   1

Definition at line 190 of file scsicmds.h.

#define SCSI_TPROTO_SRP   4 /* SCSI over RDMA */

Definition at line 193 of file scsicmds.h.

#define SCSI_TPROTO_SSA   2

Definition at line 191 of file scsicmds.h.

#define SCSI_TPROTO_UAS   9 /* USB attached SCSI */

Definition at line 198 of file scsicmds.h.

#define SCSI_VPD_ATA_INFORMATION   0x89

Definition at line 293 of file scsicmds.h.

#define SCSI_VPD_BLOCK_DEVICE_CHARACTERISTICS   0xb1

Definition at line 297 of file scsicmds.h.

#define SCSI_VPD_BLOCK_LIMITS   0xb0

Definition at line 296 of file scsicmds.h.

#define SCSI_VPD_DEVICE_IDENTIFICATION   0x83

Definition at line 291 of file scsicmds.h.

#define SCSI_VPD_EXTENDED_INQUIRY_DATA   0x86

Definition at line 292 of file scsicmds.h.

#define SCSI_VPD_LOGICAL_BLOCK_PROVISIONING   0xb2

Definition at line 298 of file scsicmds.h.

#define SCSI_VPD_POWER_CONDITION   0x8a

Definition at line 294 of file scsicmds.h.

#define SCSI_VPD_POWER_CONSUMPTION   0x8d

Definition at line 295 of file scsicmds.h.

#define SCSI_VPD_SUPPORTED_VPD_PAGES   0x0

Definition at line 289 of file scsicmds.h.

#define SCSI_VPD_UNIT_SERIAL_NUMBER   0x80

Definition at line 290 of file scsicmds.h.

#define SCSICMDS_H_CVSID   "$Id: scsicmds.h 4683 2018-01-07 22:46:30Z dpgilbert $\n"

Definition at line 33 of file scsicmds.h.

#define SEAGATE_CACHE_LPAGE   0x37

Definition at line 243 of file scsicmds.h.

#define SEAGATE_FACTORY_LPAGE   0x3e

Definition at line 244 of file scsicmds.h.

#define SELFTEST_RESULTS_LPAGE   0x10

Definition at line 219 of file scsicmds.h.

#define SEND_DIAGNOSTIC   0x1d

Definition at line 75 of file scsicmds.h.

#define SIMPLE_ERR_ABORTED_COMMAND   11 /* probably transport error */

Definition at line 336 of file scsicmds.h.

#define SIMPLE_ERR_BAD_FIELD   3 /* in cbd */

Definition at line 328 of file scsicmds.h.

#define SIMPLE_ERR_BAD_OPCODE   2

Definition at line 327 of file scsicmds.h.

#define SIMPLE_ERR_BAD_PARAM   4 /* in data */

Definition at line 329 of file scsicmds.h.

#define SIMPLE_ERR_BAD_RESP   5 /* response fails sanity */

Definition at line 330 of file scsicmds.h.

#define SIMPLE_ERR_BECOMING_READY   7 /* device will be ready soon */

Definition at line 332 of file scsicmds.h.

#define SIMPLE_ERR_MEDIUM_HARDWARE   9 /* medium or hardware error */

Definition at line 334 of file scsicmds.h.

#define SIMPLE_ERR_NO_MEDIUM   6 /* no medium present */

Definition at line 331 of file scsicmds.h.

#define SIMPLE_ERR_NOT_READY   1

Definition at line 326 of file scsicmds.h.

#define SIMPLE_ERR_TRY_AGAIN   8 /* some warning, try again */

Definition at line 333 of file scsicmds.h.

#define SIMPLE_ERR_UNKNOWN   10 /* unknown sense value */

Definition at line 335 of file scsicmds.h.

#define SIMPLE_NO_ERROR   0

Definition at line 325 of file scsicmds.h.

#define SS_MEDIA_LPAGE   0x11 /* SBC-3 */

Definition at line 220 of file scsicmds.h.

#define START_STOP_UNIT   0x1b

Definition at line 84 of file scsicmds.h.

#define STARTSTOP_CYCLE_COUNTER_LPAGE   0x0e

Definition at line 217 of file scsicmds.h.

#define SUPP_SPAGE_L_SPAGE   0xff /* 0x0,0xff pages+subpages */

Definition at line 240 of file scsicmds.h.

#define SUPPORTED_LPAGES   0x00

Definition at line 205 of file scsicmds.h.

#define TAPE_ALERTS_LPAGE   0x2e

Definition at line 251 of file scsicmds.h.

#define TEMPERATURE_LPAGE   0x0d

Definition at line 216 of file scsicmds.h.

#define TEST_UNIT_READY   0x0

Definition at line 45 of file scsicmds.h.

#define UTILIZATION_L_SPAGE   0x1 /* 0xe,0x1 */

Definition at line 235 of file scsicmds.h.

#define VENDOR_UNIQUE_PAGE   0x00

Definition at line 254 of file scsicmds.h.

#define VERIFY_ERROR_COUNTER_LPAGE   0x05

Definition at line 210 of file scsicmds.h.

#define VERIFY_ERROR_RECOVERY_PAGE   0x07

Definition at line 260 of file scsicmds.h.

#define WRITE_ERROR_COUNTER_LPAGE   0x02

Definition at line 207 of file scsicmds.h.

#define XOR_CONTROL_MODE_PAGE   0x10

Definition at line 263 of file scsicmds.h.

#define ZB_DEV_STATS_L_SPAGE   0x1 /* 0x14,0x1 */

Definition at line 236 of file scsicmds.h.

Function Documentation

void dStrHex ( const uint8_t *  up,
int  len,
int  no_ascii 
)

Definition at line 90 of file scsicmds.cpp.

bool is_scsi_cdb ( const uint8_t *  cdbp,
int  clen 
)

Definition at line 163 of file scsicmds.cpp.

int scsi_decode_lu_dev_id ( const unsigned char *  b,
int  blen,
char *  s,
int  slen,
int *  transport 
)

Definition at line 398 of file scsicmds.cpp.

void scsi_do_sense_disect ( const struct scsi_cmnd_io in,
struct scsi_sense_disect out 
)

Definition at line 265 of file scsicmds.cpp.

void scsi_format_id_string ( char *  out,
const uint8_t *  in,
int  n 
)

Definition at line 2781 of file scsicmds.cpp.

const char* scsi_get_opcode_name ( uint8_t  opcode)

Definition at line 248 of file scsicmds.cpp.

int scsi_IsExceptionControlEnabled ( const struct scsi_iec_mode_page iecp)

Definition at line 1425 of file scsicmds.cpp.

int scsi_IsWarningEnabled ( const struct scsi_iec_mode_page iecp)

Definition at line 1439 of file scsicmds.cpp.

int scsi_vpd_dev_id_iter ( const unsigned char *  initial_desig_desc,
int  page_len,
int *  off,
int  m_assoc,
int  m_desig_type,
int  m_code_set 
)

Definition at line 369 of file scsicmds.cpp.

int scsiCheckIE ( scsi_device device,
int  hasIELogPage,
int  hasTempLogPage,
uint8_t *  asc,
uint8_t *  ascq,
uint8_t *  currenttemp,
uint8_t *  triptemp 
)

Definition at line 1562 of file scsicmds.cpp.

int scsiCountFailedSelfTests ( scsi_device device,
int  noisy 
)

Definition at line 2385 of file scsicmds.cpp.

void scsiDecodeErrCounterPage ( unsigned char *  resp,
struct scsiErrorCounter ecp 
)

Definition at line 2286 of file scsicmds.cpp.

void scsiDecodeNonMediumErrPage ( unsigned char *  resp,
struct scsiNonMediumError nmep 
)

Definition at line 2324 of file scsicmds.cpp.

const char* scsiErrString ( int  scsiErr)

Definition at line 325 of file scsicmds.cpp.

int scsiFetchControlGLTSD ( scsi_device device,
int  modese_len,
int  current 
)

Definition at line 2464 of file scsicmds.cpp.

int scsiFetchExtendedSelfTestTime ( scsi_device device,
int *  durationSec,
int  modese_len 
)

Definition at line 2248 of file scsicmds.cpp.

int scsiFetchIECmpage ( scsi_device device,
struct scsi_iec_mode_page iecp,
int  modese_len 
)

Definition at line 1378 of file scsicmds.cpp.

int scsiFetchTransportProtocol ( scsi_device device,
int  modese_len 
)

Definition at line 2720 of file scsicmds.cpp.

const char* scsiGetIEString ( uint8_t  asc,
uint8_t  ascq 
)

Definition at line 2148 of file scsicmds.cpp.

int scsiGetRPM ( scsi_device device,
int  modese_len,
int *  form_factorp,
int *  haw_zbcp 
)

Definition at line 2499 of file scsicmds.cpp.

int scsiGetSetCache ( scsi_device device,
int  modese_len,
short int *  wce,
short int *  rcd 
)

Definition at line 2545 of file scsicmds.cpp.

uint64_t scsiGetSize ( scsi_device device,
bool  avoid_rcap16,
struct scsi_readcap_resp srrp 
)

Definition at line 1254 of file scsicmds.cpp.

int scsiGetTemp ( scsi_device device,
uint8_t *  currenttemp,
uint8_t *  triptemp 
)

Definition at line 1538 of file scsicmds.cpp.

int scsiInquiryVpd ( scsi_device device,
int  vpd_page,
uint8_t *  pBuf,
int  bufLen 
)

Definition at line 880 of file scsicmds.cpp.

int scsiLogSelect ( scsi_device device,
int  pcr,
int  sp,
int  pc,
int  pagenum,
int  subpagenum,
uint8_t *  pBuf,
int  bufLen 
)

Definition at line 619 of file scsicmds.cpp.

int scsiLogSense ( scsi_device device,
int  pagenum,
int  subpagenum,
uint8_t *  pBuf,
int  bufLen,
int  known_resp_len 
)

Definition at line 524 of file scsicmds.cpp.

int scsiModePageOffset ( const uint8_t *  resp,
int  len,
int  modese_len 
)

Definition at line 1335 of file scsicmds.cpp.

int scsiModeSelect ( scsi_device device,
int  sp,
uint8_t *  pBuf,
int  bufLen 
)

Definition at line 709 of file scsicmds.cpp.

int scsiModeSelect10 ( scsi_device device,
int  sp,
uint8_t *  pBuf,
int  bufLen 
)

Definition at line 804 of file scsicmds.cpp.

int scsiModeSense ( scsi_device device,
int  pagenum,
int  subpagenum,
int  pc,
uint8_t *  pBuf,
int  bufLen 
)

Definition at line 654 of file scsicmds.cpp.

int scsiModeSense10 ( scsi_device device,
int  pagenum,
int  subpagenum,
int  pc,
uint8_t *  pBuf,
int  bufLen 
)

Definition at line 751 of file scsicmds.cpp.

int scsiReadCapacity10 ( scsi_device device,
unsigned int *  last_lbp,
unsigned int *  lb_sizep 
)

Definition at line 1181 of file scsicmds.cpp.

int scsiReadCapacity16 ( scsi_device device,
uint8_t *  pBuf,
int  bufLen 
)

Definition at line 1221 of file scsicmds.cpp.

int scsiReadDefect10 ( scsi_device device,
int  req_plist,
int  req_glist,
int  dl_format,
uint8_t *  pBuf,
int  bufLen 
)

Definition at line 1107 of file scsicmds.cpp.

int scsiReadDefect12 ( scsi_device device,
int  req_plist,
int  req_glist,
int  dl_format,
int  addrDescIndex,
uint8_t *  pBuf,
int  bufLen 
)

Definition at line 1144 of file scsicmds.cpp.

int scsiRequestSense ( scsi_device device,
struct scsi_sense_disect sense_info 
)

Definition at line 941 of file scsicmds.cpp.

int scsiSelfTestInProgress ( scsi_device device,
int *  inProgress 
)

Definition at line 2436 of file scsicmds.cpp.

int scsiSendDiagnostic ( scsi_device device,
int  functioncode,
uint8_t *  pBuf,
int  bufLen 
)

Definition at line 1020 of file scsicmds.cpp.

int scsiSetControlGLTSD ( scsi_device device,
int  enabled,
int  modese_len 
)

Definition at line 2649 of file scsicmds.cpp.

int scsiSetExceptionControlAndWarning ( scsi_device device,
int  enabled,
const struct scsi_iec_mode_page iecp 
)

Definition at line 1468 of file scsicmds.cpp.

int scsiSimpleSenseFilter ( const struct scsi_sense_disect sinfo)

Definition at line 287 of file scsicmds.cpp.

int scsiSmartDefaultSelfTest ( scsi_device device)

Definition at line 2178 of file scsicmds.cpp.

int scsiSmartExtendCapSelfTest ( scsi_device device)

Definition at line 2223 of file scsicmds.cpp.

int scsiSmartExtendSelfTest ( scsi_device device)

Definition at line 2200 of file scsicmds.cpp.

int scsiSmartSelfTestAbort ( scsi_device device)

Definition at line 2235 of file scsicmds.cpp.

int scsiSmartShortCapSelfTest ( scsi_device device)

Definition at line 2212 of file scsicmds.cpp.

int scsiSmartShortSelfTest ( scsi_device device)

Definition at line 2189 of file scsicmds.cpp.

int scsiStdInquiry ( scsi_device device,
uint8_t *  pBuf,
int  bufLen 
)

Definition at line 847 of file scsicmds.cpp.

const char* scsiTapeAlertsChangerDevice ( unsigned short  code)

Definition at line 2012 of file scsicmds.cpp.

const char* scsiTapeAlertsTapeDevice ( unsigned short  code)

Definition at line 1864 of file scsicmds.cpp.

int scsiTestUnitReady ( scsi_device device)

Definition at line 1083 of file scsicmds.cpp.

const unsigned char* sg_scsi_sense_desc_find ( const unsigned char *  sensep,
int  sense_len,
int  desc_type 
)

Definition at line 2754 of file scsicmds.cpp.

Variable Documentation

unsigned char scsi_debugmode

Definition at line 57 of file scsicmds.cpp.

supported_vpd_pages* supported_vpd_pages_p

Definition at line 59 of file scsicmds.cpp.