scsi_debugfs: dump allocted field in more convenient format
diff mbox series

Message ID 20200809095501.23166-1-dmtrmonakhov@yandex-team.ru
State Changes Requested
Headers show
Series
  • scsi_debugfs: dump allocted field in more convenient format
Related show

Commit Message

Дмитрий Монахов Aug. 9, 2020, 9:55 a.m. UTC
All request's data fields are formatted as key=val, the only exception is
allocated field, which complicates parsing.

With that patch request looks like follows:
0000000012a51451 {.op=WRITE, .cmd_flags=SYNC|IDLE, .rq_flags=STARTED|DONTPREP|ELVPRIV|IO_STAT, .state=in_flight, .tag=137, .internal_tag=188, .cmd=opcode=0x2a 2a 00 00 00 45 18 00 00 08 00, .retries=0, .result = 0x0, .flags=TAGGED|INITIALIZED|3, .timeout=30.000, .alloc_age=0.004}

Signed-off-by: Dmitry Monakhov <dmtrmonakhov@yandex-team.ru>
---
 drivers/scsi/scsi_debugfs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Bart Van Assche Aug. 10, 2020, 11:22 p.m. UTC | #1
On 2020-08-09 02:55, Dmitry Monakhov wrote:
> All request's data fields are formatted as key=val, the only exception is
> allocated field, which complicates parsing.
> 
> With that patch request looks like follows:
> 0000000012a51451 {.op=WRITE, .cmd_flags=SYNC|IDLE, .rq_flags=STARTED|DONTPREP|ELVPRIV|IO_STAT, .state=in_flight, .tag=137, .internal_tag=188, .cmd=opcode=0x2a 2a 00 00 00 45 18 00 00 08 00, .retries=0, .result = 0x0, .flags=TAGGED|INITIALIZED|3, .timeout=30.000, .alloc_age=0.004}
> 
> Signed-off-by: Dmitry Monakhov <dmtrmonakhov@yandex-team.ru>
> ---
>  drivers/scsi/scsi_debugfs.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/scsi/scsi_debugfs.c b/drivers/scsi/scsi_debugfs.c
> index c19ea7a..6ce22b1 100644
> --- a/drivers/scsi/scsi_debugfs.c
> +++ b/drivers/scsi/scsi_debugfs.c
> @@ -45,7 +45,7 @@ void scsi_show_rq(struct seq_file *m, struct request *rq)
>  		   cmd->retries, cmd->result);
>  	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",
> +	seq_printf(m, ", .timeout=%d.%03d, .alloc_age=%d.%03d",
>  		   timeout_ms / 1000, timeout_ms % 1000,
>  		   alloc_ms / 1000, alloc_ms % 1000);
>  }

Hi Dmitry,

These messages are intended for humans and are not intended for processing
by any kind of software. I think the current message is easier to understand
by a human than the new message introduced by the above patch.

Thanks,

Bart.
Дмитрий Монахов Aug. 11, 2020, 7:35 a.m. UTC | #2
11.08.2020, 02:22, "Bart Van Assche" <bvanassche@acm.org>:
> On 2020-08-09 02:55, Dmitry Monakhov wrote:
>>  All request's data fields are formatted as key=val, the only exception is
>>  allocated field, which complicates parsing.
>>
>>  With that patch request looks like follows:
>>  0000000012a51451 {.op=WRITE, .cmd_flags=SYNC|IDLE, .rq_flags=STARTED|DONTPREP|ELVPRIV|IO_STAT, .state=in_flight, .tag=137, .internal_tag=188, .cmd=opcode=0x2a 2a 00 00 00 45 18 00 00 08 00, .retries=0, .result = 0x0, .flags=TAGGED|INITIALIZED|3, .timeout=30.000, .alloc_age=0.004}
>>
>>  Signed-off-by: Dmitry Monakhov <dmtrmonakhov@yandex-team.ru>
>>  ---
>>   drivers/scsi/scsi_debugfs.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>>  diff --git a/drivers/scsi/scsi_debugfs.c b/drivers/scsi/scsi_debugfs.c
>>  index c19ea7a..6ce22b1 100644
>>  --- a/drivers/scsi/scsi_debugfs.c
>>  +++ b/drivers/scsi/scsi_debugfs.c
>>  @@ -45,7 +45,7 @@ void scsi_show_rq(struct seq_file *m, struct request *rq)
>>                      cmd->retries, cmd->result);
>>           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",
>>  + seq_printf(m, ", .timeout=%d.%03d, .alloc_age=%d.%03d",
>>                      timeout_ms / 1000, timeout_ms % 1000,
>>                      alloc_ms / 1000, alloc_ms % 1000);
>>   }
>
> Hi Dmitry,
>
> These messages are intended for humans and are not intended for processing
> by any kind of software. I think the current message is easier to understand
> by a human than the new message introduced by the above patch.

Let me disagree. I try to write test for issue like  [1]
My test does random fault injection and scan  /sys/kernel/debug/block/*/*/busy for stuck requests
The object's format looks sane and well structured for parsers, the only exception is "allocated" field, see below:
  0000000012a51451 {.op=WRITE, .state=in_flight, .tag=137.... .timeout=30.000, allocated 41255.568 s ago}

All I want to do is just make it looks unified with other fields, see below:
  0000000012a51451 {.op=WRITE, .state=in_flight, .tag=137.... .timeout=30.000, .alloc_age=41255.568}

If field name 'alloc_age' is not descriptive enough please suggest me a better one. But we definitely need
to unify  it  to .NAME=VALUE format.

Footnotes:
[1]  https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b554db147feea39617b533ab6bca247c91c6198a




>
> Thanks,
>
> Bart.

Patch
diff mbox series

diff --git a/drivers/scsi/scsi_debugfs.c b/drivers/scsi/scsi_debugfs.c
index c19ea7a..6ce22b1 100644
--- a/drivers/scsi/scsi_debugfs.c
+++ b/drivers/scsi/scsi_debugfs.c
@@ -45,7 +45,7 @@  void scsi_show_rq(struct seq_file *m, struct request *rq)
 		   cmd->retries, cmd->result);
 	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",
+	seq_printf(m, ", .timeout=%d.%03d, .alloc_age=%d.%03d",
 		   timeout_ms / 1000, timeout_ms % 1000,
 		   alloc_ms / 1000, alloc_ms % 1000);
 }