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/device_pager.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/device_pager.c')
-rw-r--r-- | sys/vm/device_pager.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/sys/vm/device_pager.c b/sys/vm/device_pager.c index 23f1440..e274095 100644 --- a/sys/vm/device_pager.c +++ b/sys/vm/device_pager.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)device_pager.c 8.1 (Berkeley) 6/11/93 - * $Id: device_pager.c,v 1.26 1997/08/25 22:15:11 bde Exp $ + * $Id: device_pager.c,v 1.27 1997/09/01 03:17:12 bde Exp $ */ #include <sys/param.h> @@ -214,7 +214,6 @@ dev_pager_getpages(object, m, count, reqpage) page = dev_pager_getfake(paddr); TAILQ_INSERT_TAIL(&object->un_pager.devp.devp_pglist, page, pageq); for (i = 0; i < count; i++) { - PAGE_WAKEUP(m[i]); vm_page_free(m[i]); } s = splhigh(); |