Currently vm_pager_get_pages does not pass the fault type down to the device pager fault. Consequently, on FreeBSD the driver has to assume that it is a write fault for the sake of correctness. This adds a lot of additional overhead.
I'm less certain about this patch so ... try and give me the benefit of the doubt.