Messages in this thread | | | From | Ed Tomlinson <> | Subject | Re: ide errors in 7-rc1-mm1 and later | Date | Fri, 4 Jun 2004 07:22:13 -0400 |
| |
On June 4, 2004 05:42 am, Jens Axboe wrote: > On Thu, Jun 03 2004, Andrew Morton wrote: > > Ed Tomlinson <edt@aei.ca> wrote: > > > > > > Hi, > > > > > > I am still getting these ide errors with 7-rc2-mm2. I get the errors even > > > if I mount with barrier=0 (or just defaults). It would seem that something is > > > sending my drive commands it does not understand... > > > > > > May 27 18:18:05 bert kernel: hda: drive_cmd: status=0x51 { DriveReady SeekComplete Error } > > > May 27 18:18:05 bert kernel: hda: drive_cmd: error=0x04 { DriveStatusError } > > > > > > How can we find out what is wrong? > > > > > > This does not seem to be an error that corrupts the fs, it just slows things > > > down when it hits a group of these. Note that they keep poping up - they > > > do stop (I still get them hours after booting). > > > > Jens, do we still have the command bytes available when this error hits? > > It's not trivial, here's a hack that should dump the offending opcode > though.
Hi Jens,
I applied the patch below and booted into the new kernel (the boot message showed the new compile time). The error messages remained the same - no extra info. Is there another place that prints this (or (!rq) is true)?
Ideas? Ed
> --- linux-2.6.7-rc2-mm2/drivers/ide/ide.c~ 2004-06-04 11:32:49.286777112 +0200 > +++ linux-2.6.7-rc2-mm2/drivers/ide/ide.c 2004-06-04 11:41:47.338870307 +0200 > @@ -438,6 +438,30 @@ > #endif /* FANCY_STATUS_DUMPS */ > printk("\n"); > } > + { > + struct request *rq; > + int opcode = 0x100; > + > + spin_lock(&ide_lock); > + rq = HWGROUP(drive)->rq; > + spin_unlock(&ide_lock); > + if (!rq) > + goto out; > + if (rq->flags & (REQ_DRIVE_CMD | REQ_DRIVE_TASK)) { > + char *args = rq->buffer; > + if (args) > + opcode = args[0]; > + } else if (rq->flags & REQ_DRIVE_TASKFILE) { > + ide_task_t *args = rq->special; > + if (args) { > + task_struct_t *tf = (task_struct_t *) args->tfRegister; > + opcode = tf->command; > + } > + } > + > + printk("ide: failed opcode was %x\n", opcode); > + } > +out: > local_irq_restore(flags); > return err; > } > - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |