This is a combination of the below two reviews.
https://reviews.freebsd.org/D21332
https://reviews.freebsd.org/D21331
I eliminated VM_ALLOC_VALID in favor of using VM_ALLOC_NOCREAT with vm_page_grab_valid(). It simplifies things a bit and I think is less ambiguous.