diff options
author | dfr <dfr@FreeBSD.org> | 1997-05-19 14:36:56 +0000 |
---|---|---|
committer | dfr <dfr@FreeBSD.org> | 1997-05-19 14:36:56 +0000 |
commit | d7e320b30e346cf2c6e56f2137bd257b8f8278e7 (patch) | |
tree | afc51a58d727816c7b373ca2288b232ae4d5dd97 /sys/vm | |
parent | 9d3c1b4d788c8e5f07a10319b51b2125f3731f85 (diff) | |
download | FreeBSD-src-d7e320b30e346cf2c6e56f2137bd257b8f8278e7.zip FreeBSD-src-d7e320b30e346cf2c6e56f2137bd257b8f8278e7.tar.gz |
Fix a few bugs with NFS and mmap caused by NFS' use of b_validoff
and b_validend. The changes to vfs_bio.c are a bit ugly but hopefully
can be tidied up later by a slight redesign.
PR: kern/2573, kern/2754, kern/3046 (possibly)
Reviewed by: dyson
Diffstat (limited to 'sys/vm')
-rw-r--r-- | sys/vm/vm_fault.c | 4 | ||||
-rw-r--r-- | sys/vm/vnode_pager.c | 7 |
2 files changed, 8 insertions, 3 deletions
diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c index c96c42a..c138ff2 100644 --- a/sys/vm/vm_fault.c +++ b/sys/vm/vm_fault.c @@ -66,7 +66,7 @@ * any improvements or extensions that they make and grant Carnegie the * rights to redistribute these changes. * - * $Id: vm_fault.c,v 1.67 1997/04/06 02:29:41 dyson Exp $ + * $Id: vm_fault.c,v 1.68 1997/04/06 16:16:11 peter Exp $ */ /* @@ -326,7 +326,7 @@ RetryFault:; m->flags |= PG_BUSY; - if (m->valid && + if (/*m->valid && */ ((m->valid & VM_PAGE_BITS_ALL) != VM_PAGE_BITS_ALL) && m->object != kernel_object && m->object != kmem_object) { goto readrest; diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c index e4d7404..d258351 100644 --- a/sys/vm/vnode_pager.c +++ b/sys/vm/vnode_pager.c @@ -38,7 +38,7 @@ * SUCH DAMAGE. * * from: @(#)vnode_pager.c 7.5 (Berkeley) 4/20/91 - * $Id: vnode_pager.c,v 1.69 1997/02/22 09:48:42 peter Exp $ + * $Id: vnode_pager.c,v 1.70 1997/03/08 04:33:47 dyson Exp $ */ /* @@ -692,7 +692,12 @@ vnode_pager_leaf_getpages(object, m, count, reqpage) /* * if ANY DEV_BSIZE blocks are valid on a large filesystem block * then, the entire page is valid -- + * XXX no it isn't */ + + if (m[reqpage]->valid != VM_PAGE_BITS_ALL) + m[reqpage]->valid = 0; + if (m[reqpage]->valid) { m[reqpage]->valid = VM_PAGE_BITS_ALL; for (i = 0; i < count; i++) { |