diff options
author | dyson <dyson@FreeBSD.org> | 1998-01-31 11:56:53 +0000 |
---|---|---|
committer | dyson <dyson@FreeBSD.org> | 1998-01-31 11:56:53 +0000 |
commit | 2aacd1ab4f077361f06a6cce5d526955a6743e48 (patch) | |
tree | b18bcbfaf5b7cd766657c55c1d3a3785eb442113 /sys/vm/vm_kern.c | |
parent | 89164485a3d81c25a2b3f202e5dc2ee0aedddd3f (diff) | |
download | FreeBSD-src-2aacd1ab4f077361f06a6cce5d526955a6743e48.zip FreeBSD-src-2aacd1ab4f077361f06a6cce5d526955a6743e48.tar.gz |
Change the busy page mgmt, so that when pages are freed, they
MUST be PG_BUSY. It is bogus to free a page that isn't busy,
because it is in a state of being "unavailable" when being
freed. The additional advantage is that the page_remove code
has a better cross-check that the page should be busy and
unavailable for other use. There were some minor problems
with the collapse code, and this plugs those subtile "holes."
Also, the vfs_bio code wasn't checking correctly for PG_BUSY
pages. I am going to develop a more consistant scheme for
grabbing pages, busy or otherwise. For now, we are stuck
with the current morass.
Diffstat (limited to 'sys/vm/vm_kern.c')
-rw-r--r-- | sys/vm/vm_kern.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/sys/vm/vm_kern.c b/sys/vm/vm_kern.c index a20cda4..0077ca2 100644 --- a/sys/vm/vm_kern.c +++ b/sys/vm/vm_kern.c @@ -61,7 +61,7 @@ * any improvements or extensions that they make and grant Carnegie the * rights to redistribute these changes. * - * $Id: vm_kern.c,v 1.39 1997/08/05 00:01:52 dyson Exp $ + * $Id: vm_kern.c,v 1.40 1998/01/22 17:30:35 dyson Exp $ */ /* @@ -328,7 +328,6 @@ retry: i -= PAGE_SIZE; m = vm_page_lookup(kmem_object, OFF_TO_IDX(offset + i)); - PAGE_WAKEUP(m); vm_page_free(m); } vm_map_delete(map, addr, addr + size); |