Date: Mon, 29 Jul 2002 05:09:13 -0400 (EDT) From: Stuart Barkley <stuartb@4gh.net> To: freebsd-stable@FreeBSD.ORG Cc: Ian Dowse <iedowse@maths.tcd.ie>, John Baldwin <jhb@FreeBSD.ORG> Subject: Re: READ_BIG problems Message-ID: <20020729044910.X69603-100000@precipice.4gh.net> In-Reply-To: <200207261528.aa62716@salmon.maths.tcd.ie>
index | next in thread | previous in thread | raw e-mail
I continue to see the READ_BIG problems on my 4.6.1 test system.
I've just finished a round of testing where I re-cvsup'ed with
tag=RELENG_4_6 and applied the patches suggested below.
After rebuilding and reinstalling (just the kernel, using 4.6-RELEASE
userland) I now see rare, but still occasional READ_BIG errors.
For testing I'm using a CD-R with 4.6-RELEASE mounted on /cdrom and
use the following commands:
root@nick-3% find -s . -print0 | xargs -0 md5 > ~/4.6.md5.4
root@nick-4% find -s . -print0 | xargs -0 md5 > ~/4.6.md5.5
md5: ./packages/www/xswallow-1.0.18.tgz: Input/output error
root@nick-5%
On my most recent build I have received a single READ_BIG error on
each of two runs of the command:
Jul 29 03:42:43 nick /kernel: acd0: READ_BIG - ILLEGAL REQUEST asc=0x64 ascq=0x00 error=0x00
Jul 29 04:42:00 nick /kernel: acd0: READ_BIG - ILLEGAL REQUEST asc=0x64 ascq=0x00 error=0x00
Earlier testing tonight showed that the dev->si_iosize_max patch had
the most impact. I'm not sure the other patches showed any input.
Before the last cvsup and rebuild I was seeing somewhat more errors
(using these same patches), but far less than previously. I'll try a
few more build variations and see if I can relate the change in error
rate to other things.
dmesg shows the cdrom as:
acd0: CDROM <CREATIVE CD3231E> at ata0-slave BIOSPIO
I'm currently booting with:
hw.ata.wc="0"
hw.ata.tags="0"
hw.ata.ata_dma="0"
hw.ata.atapi_dma="0"
Other variations didn't seem to have any impact.
On Thu, 25 Jul 2002, Ian Dowse wrote:
> Date: Thu, 25 Jul 2002 22:06:38 +0100
> From: Ian Dowse <iedowse@maths.tcd.ie>
> To: Hans Ottevanger <hansot@iae.nl>
> Cc: John Baldwin <jhb@FreeBSD.ORG>, stable@FreeBSD.ORG,
> Mark Hartley <mark@work.drapple.com>,
> Jesse Gross <jesse_gross@yahoo.com>, John Prince <johnp@lodgenet.com>
> Subject: Re: READ_BIG problems
>
> In message <3D406319.1136A6EA@iae.nl>, Hans Ottevanger writes:
> >acd0: READ_BIG command timeout - resetting
> >ata1: resetting devices .. done
> >acd0: READ_BIG command timeout - resetting
> >ata1: resetting devices .. done
>
> Could people seeing this and other ATA problems try the patch below?
> This should fix some unlikely races that could potentially be
> responsible for these problems, though I suspect it will not make
> any difference.
>
> The second part of the patch is a workaround for the "atprq" hangs
> on ATAPI tape drives.
>
> Ian
>
> Index: ata-all.c
> ===================================================================
> RCS file: /home/iedowse/CVS/src/sys/dev/ata/ata-all.c,v
> retrieving revision 1.50.2.37
> diff -u -r1.50.2.37 ata-all.c
> --- ata-all.c 19 Jun 2002 08:30:48 -0000 1.50.2.37
> +++ ata-all.c 18 Jul 2002 17:00:27 -0000
> @@ -228,10 +228,10 @@
> !ch->r_io || !ch->r_altio || !ch->r_irq)
> return ENXIO;
>
> + s = splbio();
> /* make sure channel is not busy */
> ATA_SLEEPLOCK_CH(ch, ATA_CONTROL);
>
> - s = splbio();
> #if NATADISK > 0
> if (ch->devices & ATA_ATA_MASTER && ch->device[MASTER].driver)
> ad_detach(&ch->device[MASTER], 1);
> @@ -669,10 +669,12 @@
> #endif
> int s;
>
> - if (!ATA_LOCK_CH(ch, ATA_ACTIVE))
> + s = splbio();
> + if (!ATA_LOCK_CH(ch, ATA_ACTIVE)) {
> + splx(s);
> return;
> + }
>
> - s = splbio();
> #if NATADISK > 0
> /* find & call the responsible driver if anything on the ATA queue */
> if (TAILQ_EMPTY(&ch->ata_queue)) {
> Index: atapi-all.c
> ===================================================================
> RCS file: /home/iedowse/CVS/src/sys/dev/ata/atapi-all.c,v
> retrieving revision 1.46.2.14
> diff -u -r1.46.2.14 atapi-all.c
> --- atapi-all.c 14 Jul 2002 12:35:28 -0000 1.46.2.14
> +++ atapi-all.c 14 Jul 2002 23:39:00 -0000
> @@ -186,6 +186,7 @@
> request->flags = flags;
> request->timeout = timeout * hz;
> request->ccbsize = atadev->param->packet_size ? 16 : 12;
> + request->error = EINPROGRESS;
> bcopy(ccb, request->ccb, request->ccbsize);
> if (callback) {
> request->callback = callback;
> @@ -215,7 +216,8 @@
> }
>
> /* wait for request to complete */
> - tsleep((caddr_t)request, PRIBIO, "atprq", 0);
> + if (request->error == EINPROGRESS)
> + tsleep((caddr_t)request, PRIBIO, "atprq", 0);
> splx(s);
> error = request->error;
> if (error)
>
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-stable" in the body of the message
>
On Fri, 26 Jul 2002, Ian Dowse wrote:
> Date: Fri, 26 Jul 2002 15:28:48 +0100
> From: Ian Dowse <iedowse@maths.tcd.ie>
> To: Jesse Gross <jesse_gross@yahoo.com>
> Cc: John Baldwin <jhb@FreeBSD.ORG>, stable@FreeBSD.ORG,
> Mark Hartley <mark@work.drapple.com>, John Prince <johnp@lodgenet.com>,
> Hans Ottevanger <hansot@iae.nl>
> Subject: Re: READ_BIG problems
>
> In message <20020726134201.72747.qmail@web14107.mail.yahoo.com>, Jesse Gross wr
> ites:
> >No luck.
> >
> >The patch didn't seem to make any difference.
>
> Thanks to everybody for trying. Below is another patch that apparently
> does help - I got Hans to try it, and he says that it seemed to work.
>
> Does this makes a difference for anybody else?
>
> Ian
>
> Index: atapi-cd.c
> ===================================================================
> RCS file: /home/iedowse/CVS/src/sys/dev/ata/atapi-cd.c,v
> retrieving revision 1.48.2.16
> diff -u -r1.48.2.16 atapi-cd.c
> --- atapi-cd.c 27 Mar 2002 19:48:37 -0000 1.48.2.16
> +++ atapi-cd.c 26 Jul 2002 14:22:37 -0000
> @@ -266,7 +266,7 @@
> dev = make_dev(&acd_cdevsw, dkmakeminor(cdp->lun, 0, 0),
> UID_ROOT, GID_OPERATOR, 0644, "acd%d", cdp->lun);
> dev->si_drv1 = cdp;
> - dev->si_iosize_max = 252 * DEV_BSIZE;
> + dev->si_iosize_max = 64 * DEV_BSIZE;
> dev->si_bsize_phys = 2048; /* XXX SOS */
> cdp->dev = dev;
> cdp->device->flags |= ATA_D_MEDIA_CHANGED;
>
>
>
>
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-stable" in the body of the message
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020729044910.X69603-100000>
