mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
scsi: core: Report error list information in debugfs
Provide information in debugfs about SCSI error handling to make it easier to debug the SCSI error handler. Additionally, report the maximum number of retries in debugfs (.allowed). Reviewed-by: John Garry <john.g.garry@oracle.com> Cc: Hannes Reinecke <hare@suse.de> Cc: Damien Le Moal <damien.lemoal@opensource.wdc.com> Cc: Mike Christie <michael.christie@oracle.com> Cc: Ming Lei <ming.lei@redhat.com> Signed-off-by: Bart Van Assche <bvanassche@acm.org> Link: https://lore.kernel.org/r/20230822163811.219569-1-bvanassche@acm.org Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
79519528a1
commit
90f359c1aa
@ -3,6 +3,7 @@
|
||||
#include <linux/seq_file.h>
|
||||
#include <scsi/scsi_cmnd.h>
|
||||
#include <scsi/scsi_dbg.h>
|
||||
#include <scsi/scsi_host.h>
|
||||
#include "scsi_debugfs.h"
|
||||
|
||||
#define SCSI_CMD_FLAG_NAME(name)[const_ilog2(SCMD_##name)] = #name
|
||||
@ -33,14 +34,33 @@ static int scsi_flags_show(struct seq_file *m, const unsigned long flags,
|
||||
|
||||
void scsi_show_rq(struct seq_file *m, struct request *rq)
|
||||
{
|
||||
struct scsi_cmnd *cmd = blk_mq_rq_to_pdu(rq);
|
||||
struct scsi_cmnd *cmd = blk_mq_rq_to_pdu(rq), *cmd2;
|
||||
struct Scsi_Host *shost = cmd->device->host;
|
||||
int alloc_ms = jiffies_to_msecs(jiffies - cmd->jiffies_at_alloc);
|
||||
int timeout_ms = jiffies_to_msecs(rq->timeout);
|
||||
const char *list_info = NULL;
|
||||
char buf[80] = "(?)";
|
||||
|
||||
spin_lock_irq(shost->host_lock);
|
||||
list_for_each_entry(cmd2, &shost->eh_abort_list, eh_entry) {
|
||||
if (cmd == cmd2) {
|
||||
list_info = "on eh_abort_list";
|
||||
goto unlock;
|
||||
}
|
||||
}
|
||||
list_for_each_entry(cmd2, &shost->eh_cmd_q, eh_entry) {
|
||||
if (cmd == cmd2) {
|
||||
list_info = "on eh_cmd_q";
|
||||
goto unlock;
|
||||
}
|
||||
}
|
||||
unlock:
|
||||
spin_unlock_irq(shost->host_lock);
|
||||
|
||||
__scsi_format_command(buf, sizeof(buf), cmd->cmnd, cmd->cmd_len);
|
||||
seq_printf(m, ", .cmd=%s, .retries=%d, .result = %#x, .flags=", buf,
|
||||
cmd->retries, cmd->result);
|
||||
seq_printf(m, ", .cmd=%s, .retries=%d, .allowed=%d, .result = %#x, %s%s.flags=",
|
||||
buf, cmd->retries, cmd->allowed, cmd->result,
|
||||
list_info ? : "", list_info ? ", " : "");
|
||||
scsi_flags_show(m, cmd->flags, scsi_cmd_flags,
|
||||
ARRAY_SIZE(scsi_cmd_flags));
|
||||
seq_printf(m, ", .timeout=%d.%03d, allocated %d.%03d s ago",
|
||||
|
Loading…
Reference in New Issue
Block a user