Presumably the kernel calls xdstragegy() which sets everything up & initiates the read request then exits, leaving the process in disk wait. No; the strategy routine returns. In fact, the entire I/O may be delayed and done long after the kernel has returned to the process, so its context is not necessarily available.