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