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
Unknown Object (File)
Jan 23 2024, 3:45 PM
Unknown Object (File)
Dec 20 2023, 1:34 AM
Unknown Object (File)
Oct 11 2023, 5:22 AM
Unknown Object (File)
Sep 15 2023, 3:51 PM
Unknown Object (File)
Sep 2 2023, 7:12 PM
Unknown Object (File)
Sep 2 2023, 7:11 PM
Unknown Object (File)
Sep 2 2023, 7:11 PM
Unknown Object (File)
Aug 28 2023, 1:19 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

Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 28438
Build 26507: arc lint + arc unit