mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-11-29 17:32:43 +00:00
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:
parent
0e4f24a34e
commit
baaf1d96f0
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=25023
@ -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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user