Re: [PATCH] Only print SCSI data direction warning once for a command

2008-01-14 Thread Douglas Gilbert

Andi Kleen wrote:

to the log because they come from printk_ratelimit().  So all you've
done is halved the volume of flow to the logs and left a dangling printk
suppressed message that keeps spewing, so I don't think the patch even
does what you describe it as doing ...  if you reverse the order of the
operands in the if() it will ...


Here's an updated patch with the reversed order.

-Andi

---

Only print SCSI data direction warning once for a command v2

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 [EMAIL PROTECTED]

---
 drivers/scsi/sg.c |8 ++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Index: linux/drivers/scsi/sg.c
===
--- linux.orig/drivers/scsi/sg.c
+++ linux/drivers/scsi/sg.c
@@ -602,8 +602,9 @@ sg_write(struct file *filp, const char _
 * but is is possible that the app intended SG_DXFER_TO_DEV, because 
there
 * is a non-zero input_size, so emit a warning.
 */
-   if (hp-dxfer_direction == SG_DXFER_TO_FROM_DEV)
-   if (printk_ratelimit())
+   if (hp-dxfer_direction == SG_DXFER_TO_FROM_DEV) {
+   static char cmd[TASK_COMM_LEN];
+   if (strcmp(current-comm, cmd)  printk_ratelimit()) {
printk(KERN_WARNING
   sg_write: data in/out %d/%d bytes for SCSI command 
0x%x--
   guessing data in;\n KERN_WARNING
@@ -611,6 +612,9 @@ sg_write(struct file *filp, const char _
   old_hdr.reply_len - (int)SZ_SG_HEADER,
   input_size, (unsigned int) cmnd[0],
   current-comm);
+   strcpy(cmd, current-comm);
+   }
+   }
k = sg_common_write(sfp, srp, cmnd, sfp-timeout, blocking);
return (k  0) ? k : count;
 }




Signed-off-by: Douglas Gilbert [EMAIL PROTECTED]

-
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Only print SCSI data direction warning once for a command

2008-01-13 Thread Andi Kleen

 to the log because they come from printk_ratelimit().  So all you've
 done is halved the volume of flow to the logs and left a dangling printk
 suppressed message that keeps spewing, so I don't think the patch even
 does what you describe it as doing ...  if you reverse the order of the
 operands in the if() it will ...

Here's an updated patch with the reversed order.

-Andi

---

Only print SCSI data direction warning once for a command v2

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 [EMAIL PROTECTED]

---
 drivers/scsi/sg.c |8 ++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Index: linux/drivers/scsi/sg.c
===
--- linux.orig/drivers/scsi/sg.c
+++ linux/drivers/scsi/sg.c
@@ -602,8 +602,9 @@ sg_write(struct file *filp, const char _
 * but is is possible that the app intended SG_DXFER_TO_DEV, because 
there
 * is a non-zero input_size, so emit a warning.
 */
-   if (hp-dxfer_direction == SG_DXFER_TO_FROM_DEV)
-   if (printk_ratelimit())
+   if (hp-dxfer_direction == SG_DXFER_TO_FROM_DEV) {
+   static char cmd[TASK_COMM_LEN];
+   if (strcmp(current-comm, cmd)  printk_ratelimit()) {
printk(KERN_WARNING
   sg_write: data in/out %d/%d bytes for SCSI 
command 0x%x--
   guessing data in;\n KERN_WARNING
@@ -611,6 +612,9 @@ sg_write(struct file *filp, const char _
   old_hdr.reply_len - (int)SZ_SG_HEADER,
   input_size, (unsigned int) cmnd[0],
   current-comm);
+   strcpy(cmd, current-comm);
+   }
+   }
k = sg_common_write(sfp, srp, cmnd, sfp-timeout, blocking);
return (k  0) ? k : count;
 }
-
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Only print SCSI data direction warning once for a command

2008-01-12 Thread James Bottomley
On Wed, 2008-01-02 at 07:03 +0100, Andi Kleen wrote:
 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.

My reaction is that the intent of these warnings is to try to get people
to fix broken applications, so I'm not sure any action is appropriate;
however, it's Doug's driver, so I'll defer to him.

Even if he does say yes, though, your patch looks wrong.  It's still
going to spew the 

printk: 1078 messages suppressed.

to the log because they come from printk_ratelimit().  So all you've
done is halved the volume of flow to the logs and left a dangling printk
suppressed message that keeps spewing, so I don't think the patch even
does what you describe it as doing ...  if you reverse the order of the
operands in the if() it will ...

James


-
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] Only print SCSI data direction warning once for a command

2008-01-01 Thread Andi Kleen

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.

Signed-off-by: Andi Kleen [EMAIL PROTECTED]

---
 drivers/scsi/sg.c |8 ++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Index: linux/drivers/scsi/sg.c
===
--- linux.orig/drivers/scsi/sg.c
+++ linux/drivers/scsi/sg.c
@@ -602,8 +602,9 @@ sg_write(struct file *filp, const char _
 * but is is possible that the app intended SG_DXFER_TO_DEV, because 
there
 * is a non-zero input_size, so emit a warning.
 */
-   if (hp-dxfer_direction == SG_DXFER_TO_FROM_DEV)
-   if (printk_ratelimit())
+   if (hp-dxfer_direction == SG_DXFER_TO_FROM_DEV) {
+   static char cmd[TASK_COMM_LEN];
+   if (printk_ratelimit()  strcmp(current-comm, cmd)) {
printk(KERN_WARNING
   sg_write: data in/out %d/%d bytes for SCSI 
command 0x%x--
   guessing data in;\n KERN_WARNING
@@ -611,6 +612,9 @@ sg_write(struct file *filp, const char _
   old_hdr.reply_len - (int)SZ_SG_HEADER,
   input_size, (unsigned int) cmnd[0],
   current-comm);
+   strcpy(cmd, current-comm);
+   }
+   }
k = sg_common_write(sfp, srp, cmnd, sfp-timeout, blocking);
return (k  0) ? k : count;
 }
-
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html