From 34182e597b2aee9c82744d70aca5b410f85e3219 Mon Sep 17 00:00:00 2001 From: Mark Johnston Date: Wed, 13 Nov 2024 14:02:20 +0000 Subject: [PATCH] swap_pager: Ensure that swapoff puts swapped-in pages in page queues Readahead/behind pages are handled by the swap pager, but the get_pages caller is responsible for putting fetched pages into queues (or wiring them beforehand). Note that the VM object lock prevents the newly queued page from being immediately reclaimed in the window before it is marked dirty by swap_pager_swapoff_object(). Reported by: pho Tested by: pho Reviewed by: dougm, alc, kib MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D47526 (cherry picked from commit d11d407aee4835fd50811a5980125bb46748fa0b) --- sys/vm/swap_pager.c | 1 + 1 file changed, 1 insertion(+) diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c index ce578cc4fd8..53cd8294e29 100644 --- a/sys/vm/swap_pager.c +++ b/sys/vm/swap_pager.c @@ -1895,6 +1895,7 @@ swap_pager_swapoff_object(struct swdevt *sp, vm_object_t object) __func__, rv); VM_OBJECT_WLOCK(object); vm_object_pip_wakeupn(object, 1); + vm_page_deactivate_noreuse(m); vm_page_xunbusy(m); /*