diff options
author | James Bottomley <James.Bottomley@steeleye.com> | 2007-09-23 10:08:46 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.localdomain> | 2007-10-12 14:51:56 -0400 |
commit | 311b581e1d87be87f78e6e17fc50f468f2dec561 (patch) | |
tree | 22ebbc79dd9f028875cf158531ed10b081020699 | |
parent | 12a441622b753684cc73d1c6f225e9ac53e0bf77 (diff) |
[SCSI] Fix device not ready printk
Because scsi_print_sense_hdr prefixes with KERN_INFO, the output from
scsi_io_completion looks like:
sd 0:0:0:0: [sdb] Device not ready: <6>: Sense Key : 0x2 [current]
: ASC=0x4 ASCQ=0x3
By using scsi_show_sense_hdr, we can get the much more appealing output:
sd 0:0:0:0: [sdb] Device not ready: Sense Key : 0x2 [current]
sd 0:0:0:0: [sdb] Device not ready: ASC=0x4 ASCQ=0x3
Acked-by: Matthew Wilcox <willy@linux.intel.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
-rw-r--r-- | drivers/scsi/constants.c | 14 | ||||
-rw-r--r-- | drivers/scsi/scsi_lib.c | 10 | ||||
-rw-r--r-- | include/scsi/scsi_dbg.h | 2 |
3 files changed, 21 insertions, 5 deletions
diff --git a/drivers/scsi/constants.c b/drivers/scsi/constants.c index 7bdeed1c5a56..024553f9c247 100644 --- a/drivers/scsi/constants.c +++ b/drivers/scsi/constants.c | |||
@@ -1235,6 +1235,20 @@ scsi_print_sense_hdr(const char *name, struct scsi_sense_hdr *sshdr) | |||
1235 | } | 1235 | } |
1236 | EXPORT_SYMBOL(scsi_print_sense_hdr); | 1236 | EXPORT_SYMBOL(scsi_print_sense_hdr); |
1237 | 1237 | ||
1238 | /* | ||
1239 | * Print normalized SCSI sense header with device information and a prefix. | ||
1240 | */ | ||
1241 | void | ||
1242 | scsi_cmd_print_sense_hdr(struct scsi_cmnd *scmd, const char *desc, | ||
1243 | struct scsi_sense_hdr *sshdr) | ||
1244 | { | ||
1245 | scmd_printk(KERN_INFO, scmd, "%s: ", desc); | ||
1246 | scsi_show_sense_hdr(sshdr); | ||
1247 | scmd_printk(KERN_INFO, scmd, "%s: ", desc); | ||
1248 | scsi_show_extd_sense(sshdr->asc, sshdr->ascq); | ||
1249 | } | ||
1250 | EXPORT_SYMBOL(scsi_cmd_print_sense_hdr); | ||
1251 | |||
1238 | static void | 1252 | static void |
1239 | scsi_decode_sense_buffer(const unsigned char *sense_buffer, int sense_len, | 1253 | scsi_decode_sense_buffer(const unsigned char *sense_buffer, int sense_len, |
1240 | struct scsi_sense_hdr *sshdr) | 1254 | struct scsi_sense_hdr *sshdr) |
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 94d82cb96626..86fd3abe731a 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
@@ -944,11 +944,11 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes) | |||
944 | break; | 944 | break; |
945 | } | 945 | } |
946 | } | 946 | } |
947 | if (!(req->cmd_flags & REQ_QUIET)) { | 947 | if (!(req->cmd_flags & REQ_QUIET)) |
948 | scmd_printk(KERN_INFO, cmd, | 948 | scsi_cmd_print_sense_hdr(cmd, |
949 | "Device not ready: "); | 949 | "Device not ready", |
950 | scsi_print_sense_hdr("", &sshdr); | 950 | &sshdr); |
951 | } | 951 | |
952 | scsi_end_request(cmd, 0, this_count, 1); | 952 | scsi_end_request(cmd, 0, this_count, 1); |
953 | return; | 953 | return; |
954 | case VOLUME_OVERFLOW: | 954 | case VOLUME_OVERFLOW: |
diff --git a/include/scsi/scsi_dbg.h b/include/scsi/scsi_dbg.h index 5a43a4cd96c6..e89844cc2cd3 100644 --- a/include/scsi/scsi_dbg.h +++ b/include/scsi/scsi_dbg.h | |||
@@ -9,6 +9,8 @@ extern void __scsi_print_command(unsigned char *); | |||
9 | extern void scsi_show_extd_sense(unsigned char, unsigned char); | 9 | extern void scsi_show_extd_sense(unsigned char, unsigned char); |
10 | extern void scsi_show_sense_hdr(struct scsi_sense_hdr *); | 10 | extern void scsi_show_sense_hdr(struct scsi_sense_hdr *); |
11 | extern void scsi_print_sense_hdr(const char *, struct scsi_sense_hdr *); | 11 | extern void scsi_print_sense_hdr(const char *, struct scsi_sense_hdr *); |
12 | extern void scsi_cmd_print_sense_hdr(struct scsi_cmnd *, const char *, | ||
13 | struct scsi_sense_hdr *); | ||
12 | extern void scsi_print_sense(char *, struct scsi_cmnd *); | 14 | extern void scsi_print_sense(char *, struct scsi_cmnd *); |
13 | extern void __scsi_print_sense(const char *name, | 15 | extern void __scsi_print_sense(const char *name, |
14 | const unsigned char *sense_buffer, | 16 | const unsigned char *sense_buffer, |