Page MenuHomeFreeBSD

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

Authored by markj on Jan 2 2020, 2:27 PM.
Tags
None
Referenced Files
F107170073: D23001.diff
Sat, Jan 11, 4:52 AM
Unknown Object (File)
Thu, Dec 26, 2:55 AM
Unknown Object (File)
Dec 2 2024, 1:47 PM
Unknown Object (File)
Nov 29 2024, 1:15 PM
Unknown Object (File)
Nov 28 2024, 1:40 PM
Unknown Object (File)
Nov 25 2024, 5:15 PM
Unknown Object (File)
Nov 11 2024, 3:41 AM
Unknown Object (File)
Nov 11 2024, 3:33 AM
Subscribers

Details

Summary

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
queue.

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
(PGA_REQUEUE | PGA_REQUEUE_HEAD).

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

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable