aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2021-02-10 16:10:27 +0000
committerMark Johnston <markj@FreeBSD.org>2021-02-13 00:25:05 +0000
commita73aaaeb579bc7454621c4389636a6d4a952d58c (patch)
treecef341557add6407e2233c5ae92b965fbe7c3565
parent5bc11b95b87c931d45dee0e3f27ce1455f59a460 (diff)
vm: Honour the "noreuse" flag to vm_page_unwire_managed()
This flag indicates that the page should be enqueued near the head of the inactive queue, skipping the LRU queue. It is used when unwiring pages from the buffer cache following direct I/O or after I/O when POSIX_FADV_NOREUSE or _DONTNEED advice was specified, or when sendfile(SF_NOCACHE) completes. For the direct I/O and sendfile cases we only enqueue the page if we decide not to free it, typically because it's mapped. Pass "noreuse" through to vm_page_release_toq() so that we actually honour the desired LRU policy for these scenarios. Reported by: bdrewery Reviewed by: alc, kib Differential Revision: https://reviews.freebsd.org/D28555 (cherry picked from commit 5c18744ea9b94cb6a9a091a900fa4999868736e1)
-rw-r--r--sys/vm/vm_page.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
index e668bbdc6178..c36b8cdc5762 100644
--- a/sys/vm/vm_page.c
+++ b/sys/vm/vm_page.c
@@ -3989,7 +3989,7 @@ vm_page_unwire_managed(vm_page_t m, uint8_t nqueue, bool noreuse)
* (i.e., the VPRC_OBJREF bit is clear), we only need to
* clear leftover queue state.
*/
- vm_page_release_toq(m, nqueue, false);
+ vm_page_release_toq(m, nqueue, noreuse);
} else if (old == 1) {
vm_page_aflag_clear(m, PGA_DEQUEUE);
}