Page MenuHomeFreeBSD

Clear queue operation flags when migrating a page to another queue.

Authored by markj on Jan 2 2020, 2:27 PM.



The page daemon loops may move pages back to the active queue if
references are detected. In this case we must take care to clear
existing queue operation flags. In particular, PGA_REQUEUE_HEAD may be
set, and that flag is only valid if the page belongs to the inactive

Note that in each updated loop we have already checked for PGA_DEQUEUE.
So, when clearing PGA_QUEUE_OP_MASK we are really only clearing

In a follow-up patch I will add a function to wrap updates to "new".

Also fix a bug in the active queue scan where we were updating "old"
instead of "new". This would only have been hit in rare cases where the
page moved out of the active queue after the beginning of the scan.

Diff Detail

rS FreeBSD src repository
Automatic diff as part of commit; lint not applicable.
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

markj created this revision.Jan 2 2020, 2:27 PM
kib accepted this revision.Jan 2 2020, 5:30 PM
This revision is now accepted and ready to land.Jan 2 2020, 5:30 PM
alc accepted this revision.Jan 2 2020, 6:16 PM