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:[EMAIL PROTECTED] 
Sent: 11 April 2005 06:12
To: Scott Long
Cc: Anthony Downer; [EMAIL PROTECTED]; [EMAIL PROTECTED]
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.

_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to