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:
zhenwei pi
2023-11-03 12:17:38 +08:00
parent 6e8497e53f
commit 283e99b322
2 changed files with 102 additions and 0 deletions

View File

@@ -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,

View File

@@ -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)
{