Introduce helper function scsi_opcode_str
Convert SCSI opcode into string for trouble shooting. Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
This commit is contained in:
@@ -205,6 +205,8 @@ EXTERN const char *scsi_sense_ascq_str(int ascq);
|
||||
|
||||
EXTERN const char *scsi_pr_type_str(enum scsi_persistent_out_type pr_type);
|
||||
|
||||
EXTERN const char *scsi_opcode_str(int opcode);
|
||||
|
||||
enum scsi_xfer_dir {
|
||||
SCSI_XFER_NONE = 0,
|
||||
SCSI_XFER_READ = 1,
|
||||
|
||||
@@ -264,6 +264,106 @@ scsi_pr_type_str(enum scsi_persistent_out_type pr_type)
|
||||
return value_string_find(pr_type_strings, pr_type);
|
||||
}
|
||||
|
||||
const char *
|
||||
scsi_opcode_str(int opcode)
|
||||
{
|
||||
static struct value_string opcode_strings[] = {
|
||||
{SCSI_OPCODE_TESTUNITREADY,
|
||||
"TESTUNITREADY"},
|
||||
{SCSI_OPCODE_READ6,
|
||||
"READ6"},
|
||||
{SCSI_OPCODE_INQUIRY,
|
||||
"INQUIRY"},
|
||||
{SCSI_OPCODE_MODESELECT6,
|
||||
"MODESELECT6"},
|
||||
{SCSI_OPCODE_RESERVE6,
|
||||
"RESERVE6"},
|
||||
{SCSI_OPCODE_RELEASE6,
|
||||
"RELEASE6"},
|
||||
{SCSI_OPCODE_MODESENSE6,
|
||||
"MODESENSE6"},
|
||||
{SCSI_OPCODE_STARTSTOPUNIT,
|
||||
"STARTSTOPUNIT"},
|
||||
{SCSI_OPCODE_PREVENTALLOW,
|
||||
"PREVENTALLOW"},
|
||||
{SCSI_OPCODE_READCAPACITY10,
|
||||
"READCAPACITY10"},
|
||||
{SCSI_OPCODE_READ10,
|
||||
"READ10"},
|
||||
{SCSI_OPCODE_WRITE10,
|
||||
"WRITE10"},
|
||||
{SCSI_OPCODE_WRITE_VERIFY10,
|
||||
"WRITE VERIFY10"},
|
||||
{SCSI_OPCODE_VERIFY10,
|
||||
"VERIFY10"},
|
||||
{SCSI_OPCODE_PREFETCH10,
|
||||
"PREFETCH10"},
|
||||
{SCSI_OPCODE_SYNCHRONIZECACHE10,
|
||||
"SYNCHRONIZECACHE10"},
|
||||
{SCSI_OPCODE_READ_DEFECT_DATA10,
|
||||
"READ DEFECT DATA10"},
|
||||
{SCSI_OPCODE_WRITE_SAME10,
|
||||
"WRITE SAME10"},
|
||||
{SCSI_OPCODE_UNMAP,
|
||||
"UNMAP"},
|
||||
{SCSI_OPCODE_READTOC,
|
||||
"READTOC"},
|
||||
{SCSI_OPCODE_SANITIZE,
|
||||
"SANITIZE"},
|
||||
{SCSI_OPCODE_MODESELECT10,
|
||||
"MODESELECT10"},
|
||||
{SCSI_OPCODE_MODESENSE10,
|
||||
"MODESENSE10"},
|
||||
{SCSI_OPCODE_PERSISTENT_RESERVE_IN,
|
||||
"PERSISTENT RESERVE IN"},
|
||||
{SCSI_OPCODE_PERSISTENT_RESERVE_OUT,
|
||||
"PERSISTENT RESERVE OUT"},
|
||||
{SCSI_OPCODE_EXTENDED_COPY,
|
||||
"EXTENDED COPY"},
|
||||
{SCSI_OPCODE_RECEIVE_COPY_RESULTS,
|
||||
"RECEIVE COPY RESULTS"},
|
||||
{SCSI_OPCODE_READ16,
|
||||
"READ16"},
|
||||
{SCSI_OPCODE_COMPARE_AND_WRITE,
|
||||
"COMPARE AND WRITE"},
|
||||
{SCSI_OPCODE_WRITE16,
|
||||
"WRITE16"},
|
||||
{SCSI_OPCODE_ORWRITE,
|
||||
"ORWRITE"},
|
||||
{SCSI_OPCODE_WRITE_VERIFY16,
|
||||
"WRITE VERIFY16"},
|
||||
{SCSI_OPCODE_VERIFY16,
|
||||
"VERIFY16"},
|
||||
{SCSI_OPCODE_PREFETCH16,
|
||||
"PREFETCH16"},
|
||||
{SCSI_OPCODE_SYNCHRONIZECACHE16,
|
||||
"SYNCHRONIZECACHE16"},
|
||||
{SCSI_OPCODE_WRITE_SAME16,
|
||||
"WRITE SAME16"},
|
||||
{SCSI_OPCODE_WRITE_ATOMIC16,
|
||||
"WRITE ATOMIC16"},
|
||||
{SCSI_OPCODE_SERVICE_ACTION_IN,
|
||||
"SERVICE ACTION IN"},
|
||||
{SCSI_OPCODE_REPORTLUNS,
|
||||
"REPORTLUNS"},
|
||||
{SCSI_OPCODE_MAINTENANCE_IN,
|
||||
"MAINTENANCE IN"},
|
||||
{SCSI_OPCODE_READ12,
|
||||
"READ12"},
|
||||
{SCSI_OPCODE_WRITE12,
|
||||
"WRITE12"},
|
||||
{SCSI_OPCODE_WRITE_VERIFY12,
|
||||
"WRITE VERIFY12"},
|
||||
{SCSI_OPCODE_VERIFY12,
|
||||
"VERIFY12"},
|
||||
{SCSI_OPCODE_READ_DEFECT_DATA12,
|
||||
"READ DEFECT DATA12"},
|
||||
{0, NULL}
|
||||
};
|
||||
|
||||
return value_string_find(opcode_strings, opcode);
|
||||
}
|
||||
|
||||
uint64_t
|
||||
scsi_get_uint64(const unsigned char *c)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user