PERFORCE change 90567 for review

Alan Cox alc at FreeBSD.org
Sat Jan 28 12:17:06 PST 2006


http://perforce.freebsd.org/chv.cgi?CH=90567

Change 90567 by alc at alc_home on 2006/01/28 20:16:52

	Modify vm_pageq_remove() and vm_pageq_remove_nowakeup() to be able
	to remove cache state pages from the buddy queues.  (This is not yet
	used.)

Affected files ...

.. //depot/projects/superpages/src/sys/vm/vm_pageq.c#11 edit

Differences ...

==== //depot/projects/superpages/src/sys/vm/vm_pageq.c#11 (text+ko) ====

@@ -164,7 +164,11 @@
 	int queue = VM_PAGE_GETQUEUE(m);
 	struct vpgqueues *pq;
 
-	if (queue != PQ_NONE) {
+	if ((queue - m->buddyq) == PQ_BUDDY) {
+		buddy_unfree(m);
+		KASSERT(m->queue == PQ_NONE, ("xxx"));
+		vm_page_flag_clear(m, PG_CACHE);
+	} else if (queue != PQ_NONE) {
 		pq = &vm_page_queues[queue];
 		VM_PAGE_SETQUEUE2(m, PQ_NONE);
 		TAILQ_REMOVE(&pq->pl, m, pageq);
@@ -187,7 +191,13 @@
 	int queue = VM_PAGE_GETQUEUE(m);
 	struct vpgqueues *pq;
 
-	if (queue != PQ_NONE) {
+	if ((queue - m->buddyq) == PQ_BUDDY) {
+		buddy_unfree(m);
+		KASSERT(m->queue == PQ_NONE, ("xxx"));
+		vm_page_flag_clear(m, PG_CACHE);
+		if (vm_paging_needed())
+			pagedaemon_wakeup();
+	} else if (queue != PQ_NONE) {
 		VM_PAGE_SETQUEUE2(m, PQ_NONE);
 		pq = &vm_page_queues[queue];
 		TAILQ_REMOVE(&pq->pl, m, pageq);


More information about the p4-projects mailing list