Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 28 Jan 2006 20:17:04 GMT
From:      Alan Cox <alc@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 90567 for review
Message-ID:  <200601282017.k0SKH4op057645@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help

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

Change 90567 by alc@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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200601282017.k0SKH4op057645>