Block IO 层的请求完成在整个IO完成的路径上紧接SCSI CMD完成之后,相应的回调函数在bio或request以及request_queue初始化时被注册。
blk_done_softirq() rq->q->softirq_done_fn(rq); //scsi_softirq_done() case SUCCESS: scsi_finish_command() scsi_end_request() blk_update_request() req_bio_endio() bio_endio() bio->bi_end_io() //submit_bio_wait_endio etc blk_finish_request() req->end_io() //发自SCSI层的命令会有这个回调:blk_end_sync_rq()