diff options
author | dfr <dfr@FreeBSD.org> | 1997-04-19 14:28:36 +0000 |
---|---|---|
committer | dfr <dfr@FreeBSD.org> | 1997-04-19 14:28:36 +0000 |
commit | 7de64ed7774e2cfa9a3fd94e39045651b2118f0e (patch) | |
tree | b05a36ab911df6ff5b231b2665c2d6576098ad52 /sys/nfs/nfs_bio.c | |
parent | f2fed2ec029e905e21f6c7b137455d697d6bae7e (diff) | |
download | FreeBSD-src-7de64ed7774e2cfa9a3fd94e39045651b2118f0e.zip FreeBSD-src-7de64ed7774e2cfa9a3fd94e39045651b2118f0e.tar.gz |
Fix a bug where a program which appended many small records to a file could
wind up writing zeros instead of real data when the file is on an NFSv2
mounted directory.
While tracking this bug down, I noticed that nfs_asyncio was waking *all*
the iods when a block was written instead of just one per block. Fixing this
gives a 25% performance improvment for writes on v2 (less for v3).
Both are 2.2 candidates.
PR: kern/2774
Diffstat (limited to 'sys/nfs/nfs_bio.c')
-rw-r--r-- | sys/nfs/nfs_bio.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/nfs/nfs_bio.c b/sys/nfs/nfs_bio.c index a63fd78..5ecf4e1 100644 --- a/sys/nfs/nfs_bio.c +++ b/sys/nfs/nfs_bio.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * @(#)nfs_bio.c 8.9 (Berkeley) 3/30/95 - * $Id: nfs_bio.c,v 1.34 1997/04/03 07:52:00 dfr Exp $ + * $Id: nfs_bio.c,v 1.35 1997/04/18 14:11:59 dfr Exp $ */ @@ -502,6 +502,7 @@ nfs_write(ap) again: if (uio->uio_offset + n > np->n_size) { np->n_size = uio->uio_offset + n; + np->n_flag |= NMODIFIED; vnode_pager_setsize(vp, (u_long)np->n_size); } bufsize = biosize; @@ -747,6 +748,7 @@ again: nmp->nm_bufqiods++; wakeup((caddr_t)&nfs_iodwant[i]); gotiod = TRUE; + break; } /* |