From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: Hannes Reinecke <hare@suse.de>
Subject: [PULL 05/29] scsi: add tracing for SG_IO commands
Date: Fri, 26 Feb 2021 09:05:02 +0100 [thread overview]
Message-ID: <20210226080526.651705-6-pbonzini@redhat.com> (raw)
In-Reply-To: <20210226080526.651705-1-pbonzini@redhat.com>
From: Hannes Reinecke <hare@suse.de>
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>
---
hw/scsi/scsi-disk.c | 3 ++-
hw/scsi/scsi-generic.c | 8 +++++++-
hw/scsi/trace-events | 4 ++++
3 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c
index c4016d1cfc..a2716b26b4 100644
--- a/hw/scsi/scsi-disk.c
+++ b/hw/scsi/scsi-disk.c
@@ -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;
diff --git a/hw/scsi/scsi-generic.c b/hw/scsi/scsi-generic.c
index 3dd3ccd097..176a72951c 100644
--- a/hw/scsi/scsi-generic.c
+++ b/hw/scsi/scsi-generic.c
@@ -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;
diff --git a/hw/scsi/trace-events b/hw/scsi/trace-events
index 0e0aa9847d..9788661bfd 100644
--- a/hw/scsi/trace-events
+++ b/hw/scsi/trace-events
@@ -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"
--
2.29.2
next prev parent reply other threads:[~2021-02-26 8:20 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-26 8:04 [PULL 00/29] Misc patches for 2021-02-25 Paolo Bonzini
2021-02-26 8:04 ` [PULL 01/29] hvf: Sign the code after installation Paolo Bonzini
2021-02-26 8:04 ` [PULL 02/29] configure: fix --enable-fuzzing linker failures Paolo Bonzini
2021-02-26 8:05 ` [PULL 03/29] multiprocess: move feature to meson_options.txt Paolo Bonzini
2021-02-26 8:05 ` [PULL 04/29] scsi: make io_timeout configurable Paolo Bonzini
2021-02-26 8:05 ` Paolo Bonzini [this message]
2021-02-26 8:05 ` [PULL 06/29] scsi: allow user to set werror as report Paolo Bonzini
2021-02-26 8:05 ` [PULL 07/29] virtio-scsi: don't process IO on fenced dataplane Paolo Bonzini
2021-02-26 8:05 ` [PULL 08/29] scsi-disk: move scsi_handle_rw_error earlier Paolo Bonzini
2021-02-26 8:05 ` [PULL 09/29] scsi-disk: do not complete requests early for rerror/werror=ignore Paolo Bonzini
2021-02-26 8:05 ` [PULL 10/29] scsi: introduce scsi_sense_from_errno() Paolo Bonzini
2021-02-26 8:05 ` [PULL 11/29] scsi-disk: pass SCSI status to scsi_handle_rw_error Paolo Bonzini
2021-02-26 8:05 ` [PULL 12/29] scsi-disk: pass guest recoverable errors through even for rerror=stop Paolo Bonzini
2021-02-26 8:05 ` [PULL 13/29] scsi: drop 'result' argument from command_complete callback Paolo Bonzini
2021-02-26 8:05 ` [PULL 14/29] char: don't fail when client is not connected Paolo Bonzini
2021-02-26 8:05 ` [PULL 15/29] gdbstub: use preferred boolean option syntax Paolo Bonzini
2021-02-26 8:05 ` [PULL 16/29] qemu-options: update to show preferred boolean syntax for -chardev Paolo Bonzini
2021-02-26 8:05 ` [PULL 17/29] qemu-options: update to show preferred boolean syntax for -spice Paolo Bonzini
2021-02-26 8:05 ` [PULL 18/29] qemu-options: update to show preferred boolean syntax for -netdev Paolo Bonzini
2021-02-26 8:05 ` [PULL 19/29] qemu-options: update to show preferred boolean syntax for -incoming Paolo Bonzini
2021-02-26 8:05 ` [PULL 20/29] qemu-options: update to show preferred boolean syntax for -vnc Paolo Bonzini
2021-02-26 8:05 ` [PULL 21/29] docs: update to show preferred boolean syntax for -chardev Paolo Bonzini
2021-02-26 8:05 ` [PULL 22/29] docs: update to show preferred boolean syntax for -vnc Paolo Bonzini
2021-02-26 8:05 ` [PULL 23/29] docs: update to show preferred boolean syntax for -cpu Paolo Bonzini
2021-02-26 8:05 ` [PULL 24/29] target/i386: " Paolo Bonzini
2021-02-26 8:05 ` [PULL 25/29] qom/object.c: Fix typo Paolo Bonzini
2021-02-26 8:05 ` [PULL 26/29] target/i386: Add bus lock debug exception support Paolo Bonzini
2021-02-26 8:05 ` [PULL 27/29] vl: deprecate -writeconfig Paolo Bonzini
2021-03-01 8:00 ` Markus Armbruster
2021-03-01 10:09 ` Paolo Bonzini
2021-03-01 13:26 ` Markus Armbruster
2021-03-01 13:45 ` Paolo Bonzini
2021-03-01 14:54 ` Markus Armbruster
2021-03-01 15:05 ` Paolo Bonzini
2021-03-01 16:03 ` About '-readconfig' [Was: Re: [PULL 27/29] vl: deprecate -writeconfig] Kashyap Chamarthy
2021-03-01 16:24 ` Paolo Bonzini
2021-03-02 15:36 ` Kashyap Chamarthy
2021-02-26 8:05 ` [PULL 28/29] chardev: do not use short form boolean options in non-QemuOpts character device descriptions Paolo Bonzini
2021-02-26 8:05 ` [PULL 29/29] tcg/i386: rdpmc: fix the the condtions Paolo Bonzini
2021-02-26 8:51 ` [PULL 00/29] Misc patches for 2021-02-25 no-reply
2021-03-03 16:54 ` Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210226080526.651705-6-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--cc=hare@suse.de \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).