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: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
2fe5a9f73b
commit
b9e77bc718
|
@ -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)
|
||||||
[ 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)
|
||||||
(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)
|
||||||
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 @@
|
||||||
#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
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue