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)
Mon, Oct 13, 4:08 AM
Unknown Object (File)
Mon, Oct 13, 4:08 AM
Unknown Object (File)
Mon, Oct 13, 4:08 AM
Unknown Object (File)
Sun, Oct 12, 4:20 PM
Unknown Object (File)
Tue, Sep 23, 6:37 PM
Unknown Object (File)
Sat, Sep 20, 7:21 PM
Unknown Object (File)
Wed, Sep 17, 9:53 PM
Unknown Object (File)
Sep 2 2025, 10:37 PM
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