lkml.org 
[lkml]   [2004]   [Jun]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: ide errors in 7-rc1-mm1 and later
    Date
    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/

    \
     
     \ /
      Last update: 2005-03-22 14:03    [W:3.385 / U:0.700 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site