hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/scsi/scsi_logging.c
....@@ -1,10 +1,9 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * scsi_logging.c
34 *
45 * Copyright (C) 2014 SUSE Linux Products GmbH
56 * Copyright (C) 2014 Hannes Reinecke <hare@suse.de>
6
- *
7
- * This file is released under the GPLv2
87 */
98
109 #include <linux/kernel.h>
....@@ -206,13 +205,9 @@
206205 /* Print opcode in one line and use separate lines for CDB */
207206 off += scnprintf(logbuf + off, logbuf_len - off, "\n");
208207 dev_printk(KERN_INFO, &cmd->device->sdev_gendev, "%s", logbuf);
209
- scsi_log_release_buffer(logbuf);
210208 for (k = 0; k < cmd->cmd_len; k += 16) {
211209 size_t linelen = min(cmd->cmd_len - k, 16);
212210
213
- logbuf = scsi_log_reserve_buffer(&logbuf_len);
214
- if (!logbuf)
215
- break;
216211 off = sdev_format_header(logbuf, logbuf_len,
217212 scmd_name(cmd),
218213 cmd->request->tag);
....@@ -225,9 +220,8 @@
225220 }
226221 dev_printk(KERN_INFO, &cmd->device->sdev_gendev, "%s",
227222 logbuf);
228
- scsi_log_release_buffer(logbuf);
229223 }
230
- return;
224
+ goto out;
231225 }
232226 if (!WARN_ON(off > logbuf_len - 49)) {
233227 off += scnprintf(logbuf + off, logbuf_len - off, " ");
....@@ -237,6 +231,7 @@
237231 }
238232 out_printk:
239233 dev_printk(KERN_INFO, &cmd->device->sdev_gendev, "%s", logbuf);
234
+out:
240235 scsi_log_release_buffer(logbuf);
241236 }
242237 EXPORT_SYMBOL(scsi_print_command);
....@@ -391,6 +386,7 @@
391386 const char *mlret_string = scsi_mlreturn_string(disposition);
392387 const char *hb_string = scsi_hostbyte_string(cmd->result);
393388 const char *db_string = scsi_driverbyte_string(cmd->result);
389
+ unsigned long cmd_age = (jiffies - cmd->jiffies_at_alloc) / HZ;
394390
395391 logbuf = scsi_log_reserve_buffer(&logbuf_len);
396392 if (!logbuf)
....@@ -432,10 +428,15 @@
432428
433429 if (db_string)
434430 off += scnprintf(logbuf + off, logbuf_len - off,
435
- "driverbyte=%s", db_string);
431
+ "driverbyte=%s ", db_string);
436432 else
437433 off += scnprintf(logbuf + off, logbuf_len - off,
438
- "driverbyte=0x%02x", driver_byte(cmd->result));
434
+ "driverbyte=0x%02x ",
435
+ driver_byte(cmd->result));
436
+
437
+ off += scnprintf(logbuf + off, logbuf_len - off,
438
+ "cmd_age=%lus", cmd_age);
439
+
439440 out_printk:
440441 dev_printk(KERN_INFO, &cmd->device->sdev_gendev, "%s", logbuf);
441442 scsi_log_release_buffer(logbuf);