Fix some performance problems with the NFS mmap fixes.

This commit is contained in:
dfr 1997-06-03 09:42:43 +00:00
parent 4a116b2126
commit 77f763b0e4
3 changed files with 14 additions and 10 deletions

View File

@ -18,7 +18,7 @@
* 5. Modifications may be freely made to this file if the above conditions
* are met.
*
* $Id: vfs_bio.c,v 1.116 1997/05/19 14:36:36 dfr Exp $
* $Id: vfs_bio.c,v 1.117 1997/05/30 22:25:35 dfr Exp $
*/
/*
@ -512,13 +512,17 @@ brelse(struct buf * bp)
* flags in the vm_pages have only DEV_BSIZE resolution but
* the b_validoff, b_validend fields have byte resolution.
* This can avoid unnecessary re-reads of the buffer.
* XXX this seems to cause performance problems.
*/
if ((bp->b_flags & B_VMIO)
#ifdef notdef
&& (bp->b_vp->v_tag != VT_NFS
|| (bp->b_flags & (B_NOCACHE | B_INVAL | B_ERROR))
|| bp->b_validend == 0
|| (bp->b_validoff == 0
&& bp->b_validend == bp->b_bufsize))) {
&& bp->b_validend == bp->b_bufsize))
#endif
) {
vm_ooffset_t foff;
vm_object_t obj;
int i, resid;

View File

@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_bio.c 8.9 (Berkeley) 3/30/95
* $Id: nfs_bio.c,v 1.37 1997/05/13 19:41:32 dfr Exp $
* $Id: nfs_bio.c,v 1.38 1997/05/19 14:36:47 dfr Exp $
*/
@ -109,8 +109,8 @@ nfs_getpages(ap)
auio.uio_iov = &aiov;
auio.uio_iovcnt = 1;
aiov.iov_base = 0;
aiov.iov_len = MAXBSIZE;
auio.uio_resid = MAXBSIZE;
aiov.iov_len = PAGE_SIZE;
auio.uio_resid = PAGE_SIZE;
auio.uio_offset = IDX_TO_OFF(m->pindex);
auio.uio_segflg = UIO_NOCOPY;
auio.uio_rw = UIO_READ;
@ -120,7 +120,7 @@ nfs_getpages(ap)
m->flags |= PG_BUSY;
m->busy--;
if (error && (auio.uio_resid == MAXBSIZE))
if (error && (auio.uio_resid == PAGE_SIZE))
return VM_PAGER_ERROR;
return 0;
}

View File

@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)nfs_bio.c 8.9 (Berkeley) 3/30/95
* $Id: nfs_bio.c,v 1.37 1997/05/13 19:41:32 dfr Exp $
* $Id: nfs_bio.c,v 1.38 1997/05/19 14:36:47 dfr Exp $
*/
@ -109,8 +109,8 @@ nfs_getpages(ap)
auio.uio_iov = &aiov;
auio.uio_iovcnt = 1;
aiov.iov_base = 0;
aiov.iov_len = MAXBSIZE;
auio.uio_resid = MAXBSIZE;
aiov.iov_len = PAGE_SIZE;
auio.uio_resid = PAGE_SIZE;
auio.uio_offset = IDX_TO_OFF(m->pindex);
auio.uio_segflg = UIO_NOCOPY;
auio.uio_rw = UIO_READ;
@ -120,7 +120,7 @@ nfs_getpages(ap)
m->flags |= PG_BUSY;
m->busy--;
if (error && (auio.uio_resid == MAXBSIZE))
if (error && (auio.uio_resid == PAGE_SIZE))
return VM_PAGER_ERROR;
return 0;
}