From owner-freebsd-bugs Sun Aug 13 9: 7:10 2000 Delivered-To: freebsd-bugs@freebsd.org Received: from point.osg.gov.bc.ca (point.osg.gov.bc.ca [142.32.102.44]) by hub.freebsd.org (Postfix) with ESMTP id 57DDC37B687; Sun, 13 Aug 2000 09:07:05 -0700 (PDT) (envelope-from Cy.Schubert@uumail.gov.bc.ca) Received: (from daemon@localhost) by point.osg.gov.bc.ca (8.8.7/8.8.8) id JAA29111; Sun, 13 Aug 2000 09:07:04 -0700 Received: from passer.osg.gov.bc.ca(142.32.110.29) via SMTP by point.osg.gov.bc.ca, id smtpda29105; Sun Aug 13 09:07:02 2000 Received: (from uucp@localhost) by passer.osg.gov.bc.ca (8.9.3/8.9.1) id JAA24482; Sun, 13 Aug 2000 09:07:02 -0700 (PDT) Received: from cwsys9.cwsent.com(10.2.2.1), claiming to be "cwsys.cwsent.com" via SMTP by passer9.cwsent.com, id smtpdF24476; Sun Aug 13 09:06:21 2000 Received: (from uucp@localhost) by cwsys.cwsent.com (8.11.0/8.9.1) id e7DG6K900795; Sun, 13 Aug 2000 09:06:20 -0700 (PDT) Message-Id: <200008131606.e7DG6K900795@cwsys.cwsent.com> Received: from localhost.cwsent.com(127.0.0.1), claiming to be "cwsys" via SMTP by localhost.cwsent.com, id smtpdMit778; Sun Aug 13 09:05:41 2000 X-Mailer: exmh version 2.1.1 10/15/1999 Reply-To: Cy Schubert - ITSD Open Systems Group From: Cy Schubert - ITSD Open Systems Group X-OS: FreeBSD 4.1-RELEASE X-Sender: cy To: sos@FreeBSD.org Cc: Cy.Schubert@uumail.gov.bc.ca, freebsd-bugs@FreeBSD.org Subject: Re: kern/20573: ATA MFC Breaks -STABL In-reply-to: Your message of "Sun, 13 Aug 2000 04:32:56 PDT." <200008131132.EAA20386@freefall.freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Sun, 13 Aug 2000 09:05:40 -0700 Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org Based on my testing done so far, the previous behaviour has been restored. The bug has been fixed. The messages produced are: Aug 13 08:41:16 cwsys /kernel: ata1-master: timeout waiting to give command=c8 s=d0 e=00 Aug 13 08:41:16 cwsys /kernel: ad2: error executing command - resetting Aug 13 08:41:16 cwsys /kernel: ata1: resetting devices .. done I'm not exactly sure whether the original cause of the problem, the timeout itself, is a FreeBSD bug (PR 17592) or a drive problem. This drive has suffered timeouts under FreeBSD using DMA mode ever since it was new about 5 years ago, yet the Western Digital diagnostics see no problem, nor does PIO mode have any problem. This specific problem has been fixed and this PR can be closed. I've updated PR 17592 to document that my Western Digital drive has the same timeouts. Regards, Phone: (250)387-8437 Cy Schubert Fax: (250)387-5766 Team Leader, Sun/DEC Team Internet: Cy.Schubert@osg.gov.bc.ca Open Systems Group, ITSD, ISTA Province of BC In message <200008131132.EAA20386@freefall.freebsd.org>, sos@FreeBSD.org writes : > Synopsis: ATA MFC Breaks -STABL > > State-Changed-From-To: open->analyzed > State-Changed-By: sos > State-Changed-When: Sun Aug 13 04:29:57 PDT 2000 > State-Changed-Why: > > I'm the ATA guy :) > > Please try the following patch it should help: > > Index: ata-disk.c > =================================================================== > RCS file: /home/ncvs/src/sys/dev/ata/ata-disk.c,v > retrieving revision 1.73 > diff -u -r1.73 ata-disk.c > --- ata-disk.c 2000/08/06 18:01:47 1.73 > +++ ata-disk.c 2000/08/13 11:25:21 > @@ -391,7 +391,7 @@ > > if (ata_command(adp->controller, adp->unit, cmd, > cylinder, head, sector, count, 0, ATA_IMMEDIATE)) { > - printf("ad%d: error executing command\n", adp->lun); > + printf("ad%d: error executing command", adp->lun); > goto transfer_failed; > } > > @@ -429,12 +429,21 @@ > > transfer_failed: > untimeout((timeout_t *)ad_timeout, request, request->timeout_handle); > - request->bp->bio_error = EIO; > - request->bp->bio_flags |= BIO_ERROR; > - request->bp->bio_resid = request->bytecount; > - devstat_end_transaction_bio(&adp->stats, request->bp); > - biodone(request->bp); > - free(request, M_AD); > + printf(" - resetting\n"); > + > + /* if retries still permit, reinject this request */ > + if (request->retries++ < AD_MAX_RETRIES) > + TAILQ_INSERT_HEAD(&adp->controller->ata_queue, request, chain); > + else { > + /* retries all used up, return error */ > + request->bp->bio_error = EIO; > + request->bp->bio_flags |= BIO_ERROR; > + request->bp->bio_resid = request->bytecount; > + devstat_end_transaction_bio(&adp->stats, request->bp); > + biodone(request->bp); > + free(request, M_AD); > + } > + ata_reinit(adp->controller); > } > > int32_t > > > > Responsible-Changed-From-To: freebsd-bugs->sos > Responsible-Changed-By: sos > Responsible-Changed-When: Sun Aug 13 04:29:57 PDT 2000 > Responsible-Changed-Why: > > http://www.freebsd.org/cgi/query-pr.cgi?pr=20573 To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message