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 MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D28555
This commit is contained in:
parent
7676b388ad
commit
5c18744ea9
@ -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
|
* (i.e., the VPRC_OBJREF bit is clear), we only need to
|
||||||
* clear leftover queue state.
|
* clear leftover queue state.
|
||||||
*/
|
*/
|
||||||
vm_page_release_toq(m, nqueue, false);
|
vm_page_release_toq(m, nqueue, noreuse);
|
||||||
} else if (old == 1) {
|
} else if (old == 1) {
|
||||||
vm_page_aflag_clear(m, PGA_DEQUEUE);
|
vm_page_aflag_clear(m, PGA_DEQUEUE);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user