02_libata_ata_dump_status.patch

        This patch introduces the ata_dump_status() function, which
        for now is called from ata_to_sense_error() only.

Signed-off-by: Brett Russ <[EMAIL PROTECTED]>

 libata-scsi.c |   76 +++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 44 insertions(+), 32 deletions(-)

Index: libata-dev-2.6/drivers/scsi/libata-scsi.c
===================================================================
--- libata-dev-2.6.orig/drivers/scsi/libata-scsi.c      2005-03-23 
15:35:09.000000000 -0500
+++ libata-dev-2.6/drivers/scsi/libata-scsi.c   2005-03-23 15:35:09.000000000 
-0500
@@ -331,6 +331,49 @@ struct ata_queued_cmd *ata_scsi_qc_new(s
 }
 
 /**
+ *     ata_dump_status - user friendly display of error info
+ *     @id: id of the port in question
+ *     @tf: ptr to filled out taskfile
+ *
+ *     Decode and dump the ATA error/status registers for the user so
+ *     that they have some idea what really happened at the non
+ *     make-believe layer.
+ *
+ *     LOCKING:
+ *     inherited from caller
+ */
+void ata_dump_status(unsigned id, u8 stat, u8 err)
+{
+       printk(KERN_WARNING "ata%u: status=0x%02x { ", id, stat);
+       if (stat & ATA_BUSY) {
+               printk("Busy }\n");     /* Data is not valid in this case */
+       } else {
+               if (stat & 0x40)        printk("DriveReady ");
+               if (stat & 0x20)        printk("DeviceFault ");
+               if (stat & 0x10)        printk("SeekComplete ");
+               if (stat & 0x08)        printk("DataRequest ");
+               if (stat & 0x04)        printk("CorrectedError ");
+               if (stat & 0x02)        printk("Index ");
+               if (stat & 0x01)        printk("Error ");
+               printk("}\n");
+
+               if (err) {
+                       printk(KERN_WARNING "ata%u: error=0x%02x { ", id, err);
+                       if (err & 0x04)         printk("DriveStatusError ");
+                       if (err & 0x80) {
+                               if (err & 0x04) printk("BadCRC ");
+                               else            printk("Sector ");
+                       }
+                       if (err & 0x40)         printk("UncorrectableError ");
+                       if (err & 0x10)         printk("SectorIdNotFound ");
+                       if (err & 0x02)         printk("TrackZeroNotFound ");
+                       if (err & 0x01)         printk("AddrMarkNotFound ");
+                       printk("}\n");
+               }
+       }
+}
+
+/**
  *     ata_to_sense_error - convert ATA error to SCSI error
  *     @qc: Command that we are erroring out
  *     @drv_stat: value contained in ATA status register
@@ -400,38 +443,7 @@ void ata_to_sense_error(struct ata_queue
        if (drv_stat & ATA_ERR)
                err = ata_chk_err(qc->ap);      /* Read the err bits */
 
-       /* Display the ATA level error info */
-
-       printk(KERN_WARNING "ata%u: status=0x%02x { ", qc->ap->id, drv_stat);
-       if (drv_stat & 0x80) {
-               printk("Busy ");
-               err = 0;        /* Data is not valid in this case */
-       } else {
-               if (drv_stat & 0x40)    printk("DriveReady ");
-               if (drv_stat & 0x20)    printk("DeviceFault ");
-               if (drv_stat & 0x10)    printk("SeekComplete ");
-               if (drv_stat & 0x08)    printk("DataRequest ");
-               if (drv_stat & 0x04)    printk("CorrectedError ");
-               if (drv_stat & 0x02)    printk("Index ");
-               if (drv_stat & 0x01)    printk("Error ");
-       }
-       printk("}\n");
-
-       if (err) {
-               printk(KERN_WARNING "ata%u: error=0x%02x { ", qc->ap->id, err);
-               if (err & 0x04)         printk("DriveStatusError ");
-               if (err & 0x80) {
-                       if (err & 0x04) printk("BadCRC ");
-                       else            printk("Sector ");
-               }
-               if (err & 0x40)         printk("UncorrectableError ");
-               if (err & 0x10)         printk("SectorIdNotFound ");
-               if (err & 0x02)         printk("TrackZeroNotFound ");
-               if (err & 0x01)         printk("AddrMarkNotFound ");
-               printk("}\n");
-
-               /* Should we dump sector info here too ?? */
-       }
+       ata_dump_status(qc->ap->id, drv_stat, err);
 
        /* Look for err */
        while (sense_table[i][0] != 0xFF) {

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

Reply via email to