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
This commit is contained in:
Doug Rabson 1997-04-19 14:28:36 +00:00
parent 0e4f24a34e
commit baaf1d96f0
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=25023
2 changed files with 6 additions and 2 deletions

View File

@ -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;
}
/*

View File

@ -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;
}
/*