diff options
author | Andi Kleen <ak@suse.de> | 2008-01-13 11:41:43 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-01-23 12:29:27 -0500 |
commit | eaa3e22e8d32bf7a6176f04efad90f4a5aa67f58 (patch) | |
tree | e07c69ade8e52ee383f3f169fcc7b7e6b88cca83 /drivers/scsi | |
parent | d496f94d22d1491ffb25f4000e85f7a4ecf7f2c4 (diff) |
[SCSI] sg: Only print SCSI data direction warning once for a command
When I use cdparanoia my logs get spammed a lot by
printk: 464 messages suppressed.
sg_write: data in/out 30576/30576 bytes for SCSI command 0xbe--guessing data in;
program cdparanoia not setting count and/or reply_len properly
printk: 1078 messages suppressed.
and many more of those. With this patch the message is only printed once
for a command in a row.
v1->v2: Prevent rate limit messages too (pointed out by jejb)
Signed-off-by: Andi Kleen <ak@suse.de>
Acked-by: Douglas Gilbert <dougg@torque.net>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r-- | drivers/scsi/sg.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c index f1871ea04045..e65f5d432662 100644 --- a/drivers/scsi/sg.c +++ b/drivers/scsi/sg.c | |||
@@ -602,8 +602,9 @@ sg_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos) | |||
602 | * but is is possible that the app intended SG_DXFER_TO_DEV, because there | 602 | * but is is possible that the app intended SG_DXFER_TO_DEV, because there |
603 | * is a non-zero input_size, so emit a warning. | 603 | * is a non-zero input_size, so emit a warning. |
604 | */ | 604 | */ |
605 | if (hp->dxfer_direction == SG_DXFER_TO_FROM_DEV) | 605 | if (hp->dxfer_direction == SG_DXFER_TO_FROM_DEV) { |
606 | if (printk_ratelimit()) | 606 | static char cmd[TASK_COMM_LEN]; |
607 | if (strcmp(current->comm, cmd) && printk_ratelimit()) { | ||
607 | printk(KERN_WARNING | 608 | printk(KERN_WARNING |
608 | "sg_write: data in/out %d/%d bytes for SCSI command 0x%x--" | 609 | "sg_write: data in/out %d/%d bytes for SCSI command 0x%x--" |
609 | "guessing data in;\n" KERN_WARNING " " | 610 | "guessing data in;\n" KERN_WARNING " " |
@@ -611,6 +612,9 @@ sg_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos) | |||
611 | old_hdr.reply_len - (int)SZ_SG_HEADER, | 612 | old_hdr.reply_len - (int)SZ_SG_HEADER, |
612 | input_size, (unsigned int) cmnd[0], | 613 | input_size, (unsigned int) cmnd[0], |
613 | current->comm); | 614 | current->comm); |
615 | strcpy(cmd, current->comm); | ||
616 | } | ||
617 | } | ||
614 | k = sg_common_write(sfp, srp, cmnd, sfp->timeout, blocking); | 618 | k = sg_common_write(sfp, srp, cmnd, sfp->timeout, blocking); |
615 | return (k < 0) ? k : count; | 619 | return (k < 0) ? k : count; |
616 | } | 620 | } |