vm_grab_pages_unlocked: read all the pages at once
Define a function pctrie_lookup_range_unlocked, which looks up
consecutive elements in the pctrie, until a count limit is reached or
an item is discovered missing, and writes them into the first elements
of an array, returning the count of items found. It does not require
a lock. It uses an iterator, strictly between smr_enter and smr_exit,
when some of the nodes in the pctrie on entry may come to have only
one child, but none of them can be freed before exit.
Define a vm_radix interface to it for reading page ranges.
Change vm_page_grab_pages_unlocked to read all requested pages at
once, without relying on the existence of a linked list of pages.
Drop smr arguments from pctrie_iter_stride, since there's no smr
version in use. Drop _pctrie_iter_lookup, since it isn't needed.
Reviewed by: alc, kib, markj
Differential Revision: https://reviews.freebsd.org/D47114