scsi: add tracing for SG_IO commands
Add tracepoints for SG_IO commands to allow for debugging of SG_IO commands. Signed-off-by: Hannes Reinecke <hare@suse.de> Message-Id: <20201116183114.55703-4-hare@suse.de> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
c9b6609b69
commit
b2d50a3343
@ -2788,7 +2788,8 @@ static BlockAIOCB *scsi_block_do_sgio(SCSIBlockReq *req,
|
||||
io_header->timeout = s->qdev.io_timeout * 1000;
|
||||
io_header->usr_ptr = r;
|
||||
io_header->flags |= SG_FLAG_DIRECT_IO;
|
||||
|
||||
trace_scsi_disk_aio_sgio_command(r->req.tag, req->cdb[0], lba,
|
||||
nb_logical_blocks, io_header->timeout);
|
||||
aiocb = blk_aio_ioctl(s->qdev.conf.blk, SG_IO, io_header, cb, opaque);
|
||||
assert(aiocb != NULL);
|
||||
return aiocb;
|
||||
|
@ -129,6 +129,8 @@ static int execute_command(BlockBackend *blk,
|
||||
r->io_header.usr_ptr = r;
|
||||
r->io_header.flags |= SG_FLAG_DIRECT_IO;
|
||||
|
||||
trace_scsi_generic_aio_sgio_command(r->req.tag, r->req.cmd.buf[0],
|
||||
r->io_header.timeout);
|
||||
r->req.aiocb = blk_aio_ioctl(blk, SG_IO, &r->io_header, complete, r);
|
||||
if (r->req.aiocb == NULL) {
|
||||
return -EIO;
|
||||
@ -525,8 +527,12 @@ int scsi_SG_IO_FROM_DEV(BlockBackend *blk, uint8_t *cmd, uint8_t cmd_size,
|
||||
io_header.sbp = sensebuf;
|
||||
io_header.timeout = timeout * 1000;
|
||||
|
||||
trace_scsi_generic_ioctl_sgio_command(cmd[0], io_header.timeout);
|
||||
ret = blk_ioctl(blk, SG_IO, &io_header);
|
||||
if (ret < 0 || io_header.driver_status || io_header.host_status) {
|
||||
if (ret < 0 || io_header.status ||
|
||||
io_header.driver_status || io_header.host_status) {
|
||||
trace_scsi_generic_ioctl_sgio_done(cmd[0], ret, io_header.status,
|
||||
io_header.host_status);
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
|
@ -331,6 +331,7 @@ scsi_disk_emulate_command_UNKNOWN(int cmd, const char *name) "Unknown SCSI comma
|
||||
scsi_disk_dma_command_READ(uint64_t lba, uint32_t len) "Read (sector %" PRId64 ", count %u)"
|
||||
scsi_disk_dma_command_WRITE(const char *cmd, uint64_t lba, int len) "Write %s(sector %" PRId64 ", count %u)"
|
||||
scsi_disk_new_request(uint32_t lun, uint32_t tag, const char *line) "Command: lun=%d tag=0x%x data=%s"
|
||||
scsi_disk_aio_sgio_command(uint32_t tag, uint8_t cmd, uint64_t lba, int len, uint32_t timeout) "disk aio sgio: tag=0x%x cmd=0x%x (sector %" PRId64 ", count %d) timeout=%u"
|
||||
|
||||
# scsi-generic.c
|
||||
scsi_generic_command_complete_noio(void *req, uint32_t tag, int statuc) "Command complete %p tag=0x%x status=%d"
|
||||
@ -342,3 +343,6 @@ scsi_generic_write_data(uint32_t tag) "scsi_write_data tag=0x%x"
|
||||
scsi_generic_send_command(const char *line) "Command: data=%s"
|
||||
scsi_generic_realize_type(int type) "device type %d"
|
||||
scsi_generic_realize_blocksize(int blocksize) "block size %d"
|
||||
scsi_generic_aio_sgio_command(uint32_t tag, uint8_t cmd, uint32_t timeout) "generic aio sgio: tag=0x%x cmd=0x%x timeout=%u"
|
||||
scsi_generic_ioctl_sgio_command(uint8_t cmd, uint32_t timeout) "generic ioctl sgio: cmd=0x%x timeout=%u"
|
||||
scsi_generic_ioctl_sgio_done(uint8_t cmd, int ret, uint8_t status, uint8_t host_status) "generic ioctl sgio: cmd=0x%x ret=%d status=0x%x host_status=0x%x"
|
||||
|
Loading…
Reference in New Issue
Block a user