Date: Tue, 12 Apr 2005 12:31:33 +0100 From: Anthony Downer <Anthony.Downer@reuters.com> To: David Sze <dsze@alumni.uwaterloo.ca>, Scott Long <scottl@samsco.org> Cc: mb@imp.ch Subject: RE: [PATCH] Stability fixes for IPS driver for 4.x Message-ID: <T7042967ba10a01f01ce48@lonsmime04.rit.reuters.com>
index | next in thread | raw e-mail
Folks,
I have patched and re-built the 4.11 kernel using the
ips.RELENG_4.stability.patch.
The IBM x342 with ServeRAID 4Lx now appears to work flawlessly, copying
500MB plus without a single error.
Thank you both for your time and effort.
Cheers,
Anthony.
-----Original Message-----
From: David Sze [mailto:dsze@alumni.uwaterloo.ca]
Sent: 11 April 2005 06:12
To: Scott Long
Cc: Anthony Downer; mb@imp.ch; stable@freebsd.org
Subject: Re: [PATCH] Stability fixes for IPS driver for 4.x
At 09:17 AM 09/04/2005 -0600, Scott Long wrote this to All:
>All,
>
>Thanks to the keen eye of David Sze, the cause of the instability in
>the ips driver in FreeBSD 4.x might have been found. If it's affecting
>you, please try the attached patch and let me know the results. I'll
>commit it when everyone is happy with it.
Scott,
I think there's a problem with the ips_commands.c patch. After the
bufq_first call succeeds, bufq_remove must be called before the splx or
else the iobuf can get issued twice. However, if the subsequent
ips_get_free_cmd fails, the iobuf must be put back on the bufq.
Two patches are attached to this message:
1. ips.RELENG_4.stability.patch is just the stability patch as
described.
2. ips.RELENG_4.mfc-and-stability.patch is an MFC of your IPS cleanup
and optimization that you committed to HEAD on 01/28/05, plus the
stability patch as described.
Both patches survived a "make -j8 buildworld" for me.
The problem I'm having now is that ips does not appear to be PAE-ified.
With either patch the bus_dmamap_create call fails. Any pointers would
be appreciated, this is new territory for me.
>Thanks,
>
>Scott
>
>
>Index: ips_commands.c
>===================================================================
>RCS file: /usr/ncvs/src/sys/dev/ips/ips_commands.c,v
>retrieving revision 1.11.6.1
>diff -u -r1.11.6.1 ips_commands.c
>--- ips_commands.c 13 Jan 2005 00:46:40 -0000 1.11.6.1
>+++ ips_commands.c 9 Apr 2005 15:09:50 -0000
>@@ -162,8 +162,11 @@
> void ips_start_io_request(ips_softc_t *sc)
> {
> struct buf *iobuf;
>+ int s
>
>+ s = splbio();
> iobuf = bufq_first(&sc->queue);
>+ splx(s);
> if(!iobuf) {
> return;
> }
>@@ -171,8 +174,10 @@
> if(ips_get_free_cmd(sc, ips_send_io_request, iobuf,
>IPS_NOWAIT_FLAG)){
> return;
> }
>-
>+
>+ s = splbio();
> bufq_remove(&sc->queue, iobuf);
>+ splx(s);
> return;
> }
>
>Index: ips_disk.c
>===================================================================
>RCS file: /usr/ncvs/src/sys/dev/ips/ips_disk.c,v
>retrieving revision 1.6.6.1
>diff -u -r1.6.6.1 ips_disk.c
>--- ips_disk.c 13 Jan 2005 00:46:40 -0000 1.6.6.1
>+++ ips_disk.c 9 Apr 2005 15:07:50 -0000
>@@ -128,12 +128,15 @@
> static void ipsd_strategy(struct buf *iobuf)
> {
> ipsdisk_softc_t *dsc;
>+ int s;
>
> dsc = iobuf->b_dev->si_drv1;
> DEVICE_PRINTF(8,dsc->dev,"in strategy\n");
> devstat_start_transaction(&dsc->stats);
> iobuf->b_driver1 = (void
> *)(uintptr_t)dsc->sc->drives[dsc->disk_number].drivenum;
>- bufqdisksort(&dsc->sc->queue, iobuf);
>+ s = splbio();
>+ bufq_insert_tail(&dsc->sc->queue, iobuf);
>+ splx(s);
> ips_start_io_request(dsc->sc); }
>
-----------------------------------------------------------------
Visit our Internet site at http://www.reuters.com
To find out more about Reuters Products and Services visit http://www.reuters.com/productinfo
Any views expressed in this message are those of the individual
sender, except where the sender specifically states them to be
the views of Reuters Ltd.
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?T7042967ba10a01f01ce48>
