Page MenuHomeFreeBSD

device_pager: user iterators to free device pages
ClosedPublic

Authored by dougm on Nov 20 2024, 11:45 PM.
Tags
None
Referenced Files
F162658872: D47692.id146795.diff
Wed, Jul 15, 11:40 AM
Unknown Object (File)
Mon, Jul 13, 3:55 AM
Unknown Object (File)
Sun, Jul 5, 8:47 PM
Unknown Object (File)
Fri, Jun 19, 6:06 PM
Unknown Object (File)
Fri, Jun 19, 5:08 AM
Unknown Object (File)
Jun 3 2026, 4:51 PM
Unknown Object (File)
May 23 2026, 4:15 PM
Unknown Object (File)
May 22 2026, 11:54 PM

Details

Summary

Change cdev_mgtdev_page_free_page to take an iterator, rather than an object and page, so that removing the page from the object radix tree can take advantage of locality with iterators. Define a general-purpose function to free multiple pages, which can be used in several places.

Diff Detail

Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

sys/vm/device_pager.c
267
292

Looking at the callers of cdev_mgtdev_pager_free_pages(), I believe that in all cases the page count is simply the number of resident pages in the object. In that case, I would suggest simply iterating over all pages in the object and freeing them, rather than passing this count.

dougm marked an inline comment as done.

Drop length argument to cdev_mgtdev_pager_free_pages().

This revision is now accepted and ready to land.Nov 21 2024, 10:34 AM