提交 b9e77bc7 编写于 作者: A Alexey Kardashevskiy 提交者: Paolo Bonzini

scsi: Print command name in debug

This makes scsi_command_name() public.

This makes use of scsi_command_name() in debug output for scsi-disk and
spapr-vscsi host bus adapter. Before this, SCSI used to print hex numbers
instead of human-friendly strings.

This adds GET_EVENT_STATUS_NOTIFICATION and READ_DISC_INFORMATION to
the list of SCSI commands supported by scsi_command_name().
Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
上级 2fe5a9f7
...@@ -1429,7 +1429,7 @@ int scsi_build_sense(uint8_t *in_buf, int in_len, ...@@ -1429,7 +1429,7 @@ int scsi_build_sense(uint8_t *in_buf, int in_len,
} }
} }
static const char *scsi_command_name(uint8_t cmd) const char *scsi_command_name(uint8_t cmd)
{ {
static const char *names[] = { static const char *names[] = {
[ TEST_UNIT_READY ] = "TEST_UNIT_READY", [ TEST_UNIT_READY ] = "TEST_UNIT_READY",
...@@ -1545,6 +1545,8 @@ static const char *scsi_command_name(uint8_t cmd) ...@@ -1545,6 +1545,8 @@ static const char *scsi_command_name(uint8_t cmd)
[ SET_READ_AHEAD ] = "SET_READ_AHEAD", [ SET_READ_AHEAD ] = "SET_READ_AHEAD",
[ ALLOW_OVERWRITE ] = "ALLOW_OVERWRITE", [ ALLOW_OVERWRITE ] = "ALLOW_OVERWRITE",
[ MECHANISM_STATUS ] = "MECHANISM_STATUS", [ MECHANISM_STATUS ] = "MECHANISM_STATUS",
[ GET_EVENT_STATUS_NOTIFICATION ] = "GET_EVENT_STATUS_NOTIFICATION",
[ READ_DISC_INFORMATION ] = "READ_DISC_INFORMATION",
}; };
if (cmd >= ARRAY_SIZE(names) || names[cmd] == NULL) if (cmd >= ARRAY_SIZE(names) || names[cmd] == NULL)
......
...@@ -2027,7 +2027,8 @@ static int32_t scsi_disk_emulate_command(SCSIRequest *req, uint8_t *buf) ...@@ -2027,7 +2027,8 @@ static int32_t scsi_disk_emulate_command(SCSIRequest *req, uint8_t *buf)
(long)r->req.cmd.xfer); (long)r->req.cmd.xfer);
break; break;
default: default:
DPRINTF("Unknown SCSI command (%2.2x)\n", buf[0]); DPRINTF("Unknown SCSI command (%2.2x=%s)\n", buf[0],
scsi_command_name(buf[0]));
scsi_check_condition(r, SENSE_CODE(INVALID_OPCODE)); scsi_check_condition(r, SENSE_CODE(INVALID_OPCODE));
return 0; return 0;
} }
......
...@@ -799,8 +799,9 @@ static int vscsi_queue_cmd(VSCSIState *s, vscsi_req *req) ...@@ -799,8 +799,9 @@ static int vscsi_queue_cmd(VSCSIState *s, vscsi_req *req)
req->sreq = scsi_req_new(sdev, req->qtag, lun, srp->cmd.cdb, req); req->sreq = scsi_req_new(sdev, req->qtag, lun, srp->cmd.cdb, req);
n = scsi_req_enqueue(req->sreq); n = scsi_req_enqueue(req->sreq);
DPRINTF("VSCSI: Queued command tag 0x%x CMD 0x%x LUN %d ret: %d\n", DPRINTF("VSCSI: Queued command tag 0x%x CMD 0x%x=%s LUN %d ret: %d\n",
req->qtag, srp->cmd.cdb[0], lun, n); req->qtag, srp->cmd.cdb[0], scsi_command_name(srp->cmd.cdb[0]),
lun, n);
if (n) { if (n) {
/* Transfer direction must be set before preprocessing the /* Transfer direction must be set before preprocessing the
......
...@@ -143,6 +143,8 @@ ...@@ -143,6 +143,8 @@
#define READ_CD 0xbe #define READ_CD 0xbe
#define SEND_DVD_STRUCTURE 0xbf #define SEND_DVD_STRUCTURE 0xbf
const char *scsi_command_name(uint8_t cmd);
/* /*
* SERVICE ACTION IN subcodes * SERVICE ACTION IN subcodes
*/ */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册