The vm_page_grab function returns the page at pindex from the given object. If the page exists and is busy, vm_page_grab will sleep while waiting for it. If the page does not exist, it is allocated.
If VM_ALLOC_RETRY is not set in allocflags and the function sleeps, either getting the page from the object or while allocating it, NULL is returned.
If successful, vm_page_grab returns the page; otherwise, NULL is returned.