Date: Wed, 9 Oct 1996 11:38:49 +0100 (BST) From: Doug Rabson <dfr@render.com> To: Charles Henrich <henrich@crh.cl.msu.edu>, Hidetoshi Shimokawa <simokawa@sat.t.u-tokyo.ac.jp>, lite2@freebsd.org Subject: Delayed write patch Message-ID: <Pine.BSF.3.95.961009113604.10204c-100000@minnow.render.com>
next in thread | raw e-mail | index | archive | help
There was a stupid mistake in the delayed write patch I just sent out.
This patch should work as intended. Still makes no difference for me
though.
Index: nfs_syscalls.c
===================================================================
RCS file: /host/minnow/b/dfr/lite2/src/sys/nfs/nfs_syscalls.c,v
retrieving revision 1.14.2000.1
diff -u -r1.14.2000.1 nfs_syscalls.c
--- nfs_syscalls.c 1996/09/23 13:25:16 1.14.2000.1
+++ nfs_syscalls.c 1996/10/09 10:36:28
@@ -88,6 +88,7 @@
extern int nfsrvw_procrastinate;
struct nfssvc_sock *nfs_udpsock, *nfs_cltpsock;
static int nuidhash_max = NFS_MAXUIDHASH;
+int nfs_maxdelwri = 1;
static void nfsrv_zapsock __P((struct nfssvc_sock *slp));
static int nfssvc_iod __P((struct proc *));
@@ -762,19 +763,28 @@
* avoid any risk of the vnode getting vclean()'d while
* we are doing the write rpc.
*/
+ int ndelwri = 0;
vp = bp->b_vp;
- s = splbio();
- for (nbp = vp->v_dirtyblkhd.lh_first; nbp;
- nbp = nbp->b_vnbufs.le_next) {
- if ((nbp->b_flags &
- (B_BUSY|B_DELWRI|B_NEEDCOMMIT|B_NOCACHE))!=B_DELWRI)
- continue;
- bremfree(nbp);
- vfs_busy_pages(nbp, 1);
- nbp->b_flags |= (B_BUSY|B_ASYNC);
- break;
- }
- splx(s);
+ /*
+ * Limit the number of B_DELWRI buffers we handle to
+ * avoid locking out the other iods.
+ */
+ if (ndelwri < nfs_maxdelwri) {
+ s = splbio();
+ for (nbp = vp->v_dirtyblkhd.lh_first; nbp;
+ nbp = nbp->b_vnbufs.le_next) {
+ if ((nbp->b_flags &
+ (B_BUSY|B_DELWRI|B_NEEDCOMMIT|B_NOCACHE))!=B_DELWRI)
+ continue;
+ bremfree(nbp);
+ vfs_busy_pages(nbp, 1);
+ nbp->b_flags |= (B_BUSY|B_ASYNC);
+ ndelwri++;
+ break;
+ }
+ splx(s);
+ } else
+ nbp = NULL;
/*
* For the delayed write, do the first part of nfs_bwrite()
* up to, but not including nfs_strategy().
--
Doug Rabson, Microsoft RenderMorphics Ltd. Mail: dfr@render.com
Phone: +44 171 734 3761
FAX: +44 171 734 6426
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.95.961009113604.10204c-100000>
