All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] libata-eh: Add a simple mechanism for silencing error reporting
@ 2007-02-05 16:11 Alan
  2007-02-05 17:29 ` Tejun Heo
  2007-02-23 10:27 ` Jeff Garzik
  0 siblings, 2 replies; 4+ messages in thread
From: Alan @ 2007-02-05 16:11 UTC (permalink / raw)
  To: jeff, linux-ide, htejun

We want to be able to issue commands that fail silently some of the time
(set_features/xfer rate to CF 1.4 devices, perhaps some others such as
user SG_IO commands ought to be silent too as the error is for the app)

This is a minimal implementation, we can extend it so the QUIET flag
isn't quiet about errors that are not command errors but indicate
infrastructre problems (CRC errors, HSM violation, DeviceFault) if need
be.

Signed-off-by: Alan Cox <alan@redhat.com>

diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.20-rc6-mm3/drivers/ata/libata-eh.c linux-2.6.20-rc6-mm3/drivers/ata/libata-eh.c
--- linux.vanilla-2.6.20-rc6-mm3/drivers/ata/libata-eh.c	2007-01-31 14:20:39.000000000 +0000
+++ linux-2.6.20-rc6-mm3/drivers/ata/libata-eh.c	2007-01-31 14:27:25.000000000 +0000
@@ -1407,6 +1407,8 @@
 			continue;
 		if (qc->flags & ATA_QCFLAG_SENSE_VALID && !qc->err_mask)
 			continue;
+		if (qc->tf.flags & ATA_TFLAG_QUIET)
+			continue;
 
 		nr_failed++;
 	}
@@ -1446,6 +1448,8 @@
 
 		if (!(qc->flags & ATA_QCFLAG_FAILED) || !qc->err_mask)
 			continue;
+		if (qc->tf.flags & ATA_TFLAG_QUIET)
+			continue;
 
 		ata_dev_printk(qc->dev, KERN_ERR,
 			"cmd %02x/%02x:%02x:%02x:%02x:%02x/%02x:%02x:%02x:%02x:%02x/%02x "
diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.20-rc6-mm3/include/linux/ata.h linux-2.6.20-rc6-mm3/include/linux/ata.h
--- linux.vanilla-2.6.20-rc6-mm3/include/linux/ata.h	2007-01-31 14:20:43.000000000 +0000
+++ linux-2.6.20-rc6-mm3/include/linux/ata.h	2007-02-05 10:53:45.000000000 +0000
@@ -232,6 +232,7 @@
 	ATA_TFLAG_LBA		= (1 << 4), /* enable LBA */
 	ATA_TFLAG_FUA		= (1 << 5), /* enable FUA */
 	ATA_TFLAG_POLLING	= (1 << 6), /* set nIEN to 1 and use polling */
+	ATA_TFLAG_QUIET		= (1 << 7), /* don't log rejection */
 };
 
 enum ata_tf_protocols {

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] libata-eh: Add a simple mechanism for silencing error reporting
  2007-02-05 16:11 [PATCH] libata-eh: Add a simple mechanism for silencing error reporting Alan
@ 2007-02-05 17:29 ` Tejun Heo
  2007-02-23 10:27 ` Jeff Garzik
  1 sibling, 0 replies; 4+ messages in thread
From: Tejun Heo @ 2007-02-05 17:29 UTC (permalink / raw)
  To: Alan; +Cc: jeff, linux-ide

Alan wrote:
> We want to be able to issue commands that fail silently some of the time
> (set_features/xfer rate to CF 1.4 devices, perhaps some others such as
> user SG_IO commands ought to be silent too as the error is for the app)
> 
> This is a minimal implementation, we can extend it so the QUIET flag
> isn't quiet about errors that are not command errors but indicate
> infrastructre problems (CRC errors, HSM violation, DeviceFault) if need
> be.
> 
> Signed-off-by: Alan Cox <alan@redhat.com>
> 
> diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.20-rc6-mm3/drivers/ata/libata-eh.c linux-2.6.20-rc6-mm3/drivers/ata/libata-eh.c
> --- linux.vanilla-2.6.20-rc6-mm3/drivers/ata/libata-eh.c	2007-01-31 14:20:39.000000000 +0000
> +++ linux-2.6.20-rc6-mm3/drivers/ata/libata-eh.c	2007-01-31 14:27:25.000000000 +0000
> @@ -1407,6 +1407,8 @@
>  			continue;
>  		if (qc->flags & ATA_QCFLAG_SENSE_VALID && !qc->err_mask)
>  			continue;
> +		if (qc->tf.flags & ATA_TFLAG_QUIET)
> +			continue;
>  
>  		nr_failed++;
>  	}
> @@ -1446,6 +1448,8 @@
>  
>  		if (!(qc->flags & ATA_QCFLAG_FAILED) || !qc->err_mask)
>  			continue;
> +		if (qc->tf.flags & ATA_TFLAG_QUIET)
> +			continue;
>  
>  		ata_dev_printk(qc->dev, KERN_ERR,
>  			"cmd %02x/%02x:%02x:%02x:%02x:%02x/%02x:%02x:%02x:%02x:%02x/%02x "

I think the result can be a bit confusing if ehc->i.err_mask is set
(port/dev exception message without failed command report).  How about
counting nr_quiet and doing if (nr_failed == nr_quiet) return right
after the counting block?

-- 
tejun

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] libata-eh: Add a simple mechanism for silencing error reporting
  2007-02-05 16:11 [PATCH] libata-eh: Add a simple mechanism for silencing error reporting Alan
  2007-02-05 17:29 ` Tejun Heo
@ 2007-02-23 10:27 ` Jeff Garzik
  2007-02-23 12:10   ` Alan
  1 sibling, 1 reply; 4+ messages in thread
From: Jeff Garzik @ 2007-02-23 10:27 UTC (permalink / raw)
  To: Alan; +Cc: linux-ide, htejun

Alan wrote:
> We want to be able to issue commands that fail silently some of the time
> (set_features/xfer rate to CF 1.4 devices, perhaps some others such as
> user SG_IO commands ought to be silent too as the error is for the app)
> 
> This is a minimal implementation, we can extend it so the QUIET flag
> isn't quiet about errors that are not command errors but indicate
> infrastructre problems (CRC errors, HSM violation, DeviceFault) if need
> be.
> 
> Signed-off-by: Alan Cox <alan@redhat.com>
> 
> diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.20-rc6-mm3/drivers/ata/libata-eh.c linux-2.6.20-rc6-mm3/drivers/ata/libata-eh.c
> --- linux.vanilla-2.6.20-rc6-mm3/drivers/ata/libata-eh.c	2007-01-31 14:20:39.000000000 +0000
> +++ linux-2.6.20-rc6-mm3/drivers/ata/libata-eh.c	2007-01-31 14:27:25.000000000 +0000
> @@ -1407,6 +1407,8 @@
>  			continue;
>  		if (qc->flags & ATA_QCFLAG_SENSE_VALID && !qc->err_mask)
>  			continue;
> +		if (qc->tf.flags & ATA_TFLAG_QUIET)
> +			continue;
>  
>  		nr_failed++;
>  	}

I would rather pass an ok-to-fail-without-recovery type flag to EH. 
This TFLAG_QUIET approach is poorly defined, probably temporary, and not 
really interesting for upstream

	Jeff




^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] libata-eh: Add a simple mechanism for silencing error reporting
  2007-02-23 10:27 ` Jeff Garzik
@ 2007-02-23 12:10   ` Alan
  0 siblings, 0 replies; 4+ messages in thread
From: Alan @ 2007-02-23 12:10 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: linux-ide, htejun

> I would rather pass an ok-to-fail-without-recovery type flag to EH. 
> This TFLAG_QUIET approach is poorly defined, probably temporary, and not 
> really interesting for upstream

Fail without recovery flags make sense, but then we also need to ensure
it is a fail without recovery messages. We could add qc->ignore_mask to
mirror qc->err_mask ?

Alan


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2007-02-23 11:06 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-02-05 16:11 [PATCH] libata-eh: Add a simple mechanism for silencing error reporting Alan
2007-02-05 17:29 ` Tejun Heo
2007-02-23 10:27 ` Jeff Garzik
2007-02-23 12:10   ` Alan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.