summaryrefslogtreecommitdiffstats
path: root/sys/vm/device_pager.c
diff options
context:
space:
mode:
authordyson <dyson@FreeBSD.org>1998-01-31 11:56:53 +0000
committerdyson <dyson@FreeBSD.org>1998-01-31 11:56:53 +0000
commit2aacd1ab4f077361f06a6cce5d526955a6743e48 (patch)
treeb18bcbfaf5b7cd766657c55c1d3a3785eb442113 /sys/vm/device_pager.c
parent89164485a3d81c25a2b3f202e5dc2ee0aedddd3f (diff)
downloadFreeBSD-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.c3
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();
OpenPOWER on IntegriCloud