Patchwork ata: cleanup SAT error translation

login
register
mail settings
Submitter Gwendal Grignou
Date June 14, 2013, 8:48 p.m.
Message ID <1371242913-10899-1-git-send-email-gwendal@google.com>
Download mbox | patch
Permalink /patch/251531/
State Not Applicable
Delegated to: David Miller
Headers show

Comments

Gwendal Grignou - June 14, 2013, 8:48 p.m.
Remove duplicate Medium Error Entry.
Remove the ABRT entry: it is too broad: when only ABRT is set
we should look at status for more information.
Only if status does not provide information we set ABORTED_COMMAND
sense key.

Tested: When a disk fails, it sets
Status = 0x71 [DRDY DF ERR] , Error = 0x4 [ABRT]
Ensure the sense key is HARDWARE_ERROR.
When there is a simple command syntax error:
Status = 0x51 [DRDY ERR] , Error = 0x4 [ABRT]
Ensure the sense key is ABORTED_COMMAND.

Signed-off-by: Gwendal Grignou <gwendal@google.com>
---
 drivers/ata/libata-scsi.c | 4 ----
 1 file changed, 4 deletions(-)
Tejun Heo - June 17, 2013, 7:48 p.m.
Hello, Gwendal.

On Fri, Jun 14, 2013 at 01:48:33PM -0700, Gwendal Grignou wrote:
> Remove duplicate Medium Error Entry.
> Remove the ABRT entry: it is too broad: when only ABRT is set
> we should look at status for more information.
> Only if status does not provide information we set ABORTED_COMMAND
> sense key.
> 
> Tested: When a disk fails, it sets
> Status = 0x71 [DRDY DF ERR] , Error = 0x4 [ABRT]
> Ensure the sense key is HARDWARE_ERROR.
> When there is a simple command syntax error:
> Status = 0x51 [DRDY ERR] , Error = 0x4 [ABRT]
> Ensure the sense key is ABORTED_COMMAND.

But this would trigger "no sense translation" warning.  The
translation in that function is pretty simplistic anyway.  Can you
please update the patch so that there's a comment noting why we aren't
mapping 0x04 and drop the warning?

Thanks.

Patch

diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
index dd310b27..1724189 100644
--- a/drivers/ata/libata-scsi.c
+++ b/drivers/ata/libata-scsi.c
@@ -850,14 +850,10 @@  static void ata_to_sense_error(unsigned id, u8 drv_stat, u8 drv_err, u8 *sk,
 		{0x01, 		MEDIUM_ERROR, 0x13, 0x00}, 	// Address mark not found       Address mark not found for data field
 		/* TRK0 */
 		{0x02, 		HARDWARE_ERROR, 0x00, 0x00}, 	// Track 0 not found		  Hardware error
-		/* Abort & !ICRC */
-		{0x04, 		ABORTED_COMMAND, 0x00, 0x00}, 	// Aborted command              Aborted command
 		/* Media change request */
 		{0x08, 		NOT_READY, 0x04, 0x00}, 	// Media change request	  FIXME: faking offline
 		/* SRV */
 		{0x10, 		ABORTED_COMMAND, 0x14, 0x00}, 	// ID not found                 Recorded entity not found
-		/* Media change */
-		{0x08,  	NOT_READY, 0x04, 0x00}, 	// Media change		  FIXME: faking offline
 		/* ECC */
 		{0x40, 		MEDIUM_ERROR, 0x11, 0x04}, 	// Uncorrectable ECC error      Unrecovered read error
 		/* BBD - block marked bad */