Thread (117 messages) 117 messages, 20 authors, 2006-07-07

Re: LibPATA code issues / 2.6.15.4

From: Justin Piszcz <hidden>
Date: 2006-07-07 19:28:07
Also in: lkml


On Fri, 7 Jul 2006, Jeff Garzik wrote:
Justin Piszcz wrote:
quoted

On Fri, 7 Jul 2006, Justin Piszcz wrote:
quoted

On Fri, 7 Jul 2006, Mark Lord wrote:
quoted
Justin Piszcz wrote:
quoted
had to change

KERN_WARN -> KERN_WARNING

then more errors
Eh?  After fixing the KERN_WARN -> KERN_WARNING part,
the patch compiles / links cleanly here on 2.6.17.
(fixed copy below).   Still untested, though.
quoted
do you know who wrote the original patch?
I did.

Cheers
--- linux/drivers/scsi/libata-scsi.c.orig    2006-06-19 
10:37:03.000000000 -0400
+++ linux/drivers/scsi/libata-scsi.c    2006-07-07 09:06:57.000000000 
-0400
@@ -542,6 +542,7 @@
    struct ata_taskfile *tf = &qc->tf;
    unsigned char *sb = cmd->sense_buffer;
    unsigned char *desc = sb + 8;
+    unsigned char ata_op = tf->command;

    memset(sb, 0, SCSI_SENSE_BUFFERSIZE);
@@ -558,6 +559,7 @@
     * onto sense key, asc & ascq.
     */
    if (tf->command & (ATA_BUSY | ATA_DF | ATA_ERR | ATA_DRQ)) {
+        printk(KERN_WARNING "ata_gen_ata_desc_sense: failed 
ata_op=0x%02x\n", ata_op);
        ata_to_sense_error(qc->ap->id, tf->command, tf->feature,
                   &sb[1], &sb[2], &sb[3]);
        sb[1] &= 0x0f;
Mark!! It did it again, here you go:

==> /p34/var/log/messages <==
Jul  7 10:26:06 p34 kernel: [4296869.461000] ata4: status=0x53 { 
DriveReady SeekComplete Index Error }
Jul  7 10:26:06 p34 kernel: [4296869.461000] ata4: error=0x04 { 
DriveStatusError }
==> /p34/var/log/kern.log <==
Jul  7 10:26:06 p34 kernel: [4296869.461000] ata4: translated ATA stat/err 
0x53/04 to SCSI SK/ASC/ASCQ 0xb/00/00
Jul  7 10:26:06 p34 kernel: [4296869.461000] ata4: status=0x53 { 
DriveReady SeekComplete Index Error }
Jul  7 10:26:06 p34 kernel: [4296869.461000] ata4: error=0x04 { 
DriveStatusError }

Does this help?

Can we eliminate the cause of these errors now?
Jeff or Alan,

Does that ATA translation help in determining what *bad* commands are being 
sent to the drive?
No, it needs the patch that Mark has been posting...

	Jeff

Jeff, the patch is applied and box booted the new kernel and I reproduced 
the error messages, THAT is what is produced with the patch.


Without the patch:

Jun 18 07:09:53 p34 kernel: [4297678.777000] ata3: status=0x51 { 
DriveReady SeekComplete Error }
Jun 18 07:09:53 p34 kernel: [4297678.777000] ata3: error=0x04 { 
DriveStatusError }
Jun 18 07:20:08 p34 -- MARK --
Jun 18 07:27:31 p34 kernel: [4298736.905000] ata3: status=0x51 { 
DriveReady SeekComplete Error }
Jun 18 07:27:31 p34 kernel: [4298736.905000] ata3: error=0x04 { 
DriveStatusError }

With the patch:

Jul  7 10:26:06 p34 kernel: [4296869.461000] ata4: translated ATA stat/err 
0x53/04 to SCSI SK/ASC/ASCQ 0xb/00/00
Jul  7 10:26:06 p34 kernel: [4296869.461000] ata4: status=0x53 { 
DriveReady SeekComplete Index Error }
Jul  7 10:26:06 p34 kernel: [4296869.461000] ata4: error=0x04 { 
DriveStatusError }
Jul  7 10:49:29 p34 kernel: [4298273.178000] ata4: translated ATA stat/err 
0x51/04 to SCSI SK/ASC/ASCQ 0xb/00/00
Jul  7 10:49:29 p34 kernel: [4298273.178000] ata4: status=0x51 { 
DriveReady SeekComplete Error }
Jul  7 10:49:29 p34 kernel: [4298273.178000] ata4: error=0x04 { 
DriveStatusError }
Jul  7 11:43:02 p34 kernel: [4301488.359000] ata4: translated ATA stat/err 
0x51/04 to SCSI SK/ASC/ASCQ 0xb/00/00
Jul  7 11:43:02 p34 kernel: [4301488.359000] ata4: status=0x51 { 
DriveReady SeekComplete Error }
Jul  7 11:43:02 p34 kernel: [4301488.359000] ata4: error=0x04 { 
DriveStatusError }
Jul  7 12:35:27 p34 kernel: [4304634.600000] ata4: translated ATA stat/err 
0x51/04 to SCSI SK/ASC/ASCQ 0xb/00/00
Jul  7 12:35:27 p34 kernel: [4304634.600000] ata4: status=0x51 { 
DriveReady SeekComplete Error }
Jul  7 12:35:27 p34 kernel: [4304634.600000] ata4: error=0x04 { 
DriveStatusError }
Jul  7 12:44:14 p34 kernel: [4305162.220000] ata4: no sense translation 
for status: 0x51
Jul  7 12:44:14 p34 kernel: [4305162.220000] ata4: translated ATA stat/err 
0x51/00 to SCSI SK/ASC/ASCQ 0xb/00/00
Jul  7 12:44:14 p34 kernel: [4305162.220000] ata4: status=0x51 { 
DriveReady SeekComplete Error }
Jul  7 13:03:22 p34 kernel: [4306309.782000] ata4: translated ATA stat/err 
0x51/04 to SCSI SK/ASC/ASCQ 0xb/00/00
Jul  7 13:03:22 p34 kernel: [4306309.782000] ata4: status=0x51 { 
DriveReady SeekComplete Error }
Jul  7 13:03:22 p34 kernel: [4306309.782000] ata4: error=0x04 { 
DriveStatusError }
Jul  7 13:05:12 p34 kernel: [4306419.891000] ata4: no sense translation 
for status: 0x51
Jul  7 13:05:12 p34 kernel: [4306419.891000] ata4: translated ATA stat/err 
0x51/00 to SCSI SK/ASC/ASCQ 0xb/00/00
Jul  7 13:05:12 p34 kernel: [4306419.891000] ata4: status=0x51 { 
DriveReady SeekComplete Error }
Jul  7 13:32:20 p34 kernel: [4308048.717000] ata4: translated ATA stat/err 
0x51/04 to SCSI SK/ASC/ASCQ 0xb/00/00
Jul  7 13:32:20 p34 kernel: [4308048.717000] ata4: status=0x51 { 
DriveReady SeekComplete Error }
Jul  7 13:32:20 p34 kernel: [4308048.717000] ata4: error=0x04 { 
DriveStatusError }

When I had been running it earlier with 2.6.15.x:

Mar  1 13:31:10 p34 kernel: [4295292.736000] +++PATCH: Original kernel 
error:
Mar  1 13:31:10 p34 kernel: [4295292.736000] ata3: translated op=0x85 ATA 
stat/err 0x51/04 to SCSI SK/ASC/ASCQ 0xb/00/00
Mar  1 13:31:10 p34 kernel: [4295292.736000] +++PATCH: Mark Lord's 
extended verbosity patch:
Mar  1 13:31:10 p34 kernel: [4295292.736000] ata3: translated op=0x85 
cmd=0xb0 ATA stat/err 0x51/04 to SCSI SK/ASC/ASCQ 0xb/00/00
Mar  1 13:31:10 p34 kernel: [4295292.736000] ata3: status=0x51 { 
DriveReady SeekComplete Error }
Mar  1 13:31:10 p34 kernel: [4295292.736000] ata3: error=0x04 { 
DriveStatusError }
Mar  1 13:31:10 p34 kernel: [4295292.736000] +++PATCH: Original kernel 
error:
Mar  1 13:31:10 p34 kernel: [4295292.736000] ata3: translated op=0x85 ATA 
stat/err 0x51/04 to SCSI SK/ASC/ASCQ 0xb/00/00
Mar  1 13:31:10 p34 kernel: [4295292.736000] +++PATCH: Mark Lord's 
extended verbosity patch:
Mar  1 13:31:10 p34 kernel: [4295292.736000] ata3: translated op=0x85 
cmd=0xb0 ATA stat/err 0x51/04 to SCSI SK/ASC/ASCQ 0xb/00/00
Mar  1 13:31:10 p34 kernel: [4295292.736000] ata3: status=0x51 { 
DriveReady SeekComplete Error }
Mar  1 13:31:10 p34 kernel: [4295292.736000] ata3: error=0x04 { 
DriveStatusError }

Perhaps the patch is not printing out the correct error message?

This shows that the source file was patched in libata-scsi.c.

         /*
          * Use ata_to_sense_error() to map status register bits
          * onto sense key, asc & ascq.
          */
         if (tf->command & (ATA_BUSY | ATA_DF | ATA_ERR | ATA_DRQ)) {
                 printk(KERN_WARNING "ata_gen_ata_desc_sense: failed 
ata_op=0x%02x\n", ata_op);
                 ata_to_sense_error(qc->ap->id, tf->command, tf->feature,
                                    &sb[1], &sb[2], &sb[3]);
                 sb[1] &= 0x0f;
         }


This shows the kernel version.
$ cat /usr/src/linux/.version
4

This shows I am running the patched version.
$ uname -a
Linux p34.internal.lan 2.6.17.3 #4 SMP PREEMPT Fri Jul 7 09:47:53 EDT 2006 
i686 GNU/Linux
$

Maybe something is blocking the opcode output from showing correctly?

Justin.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help