Hi All, I am trying to understand the scsi upper layer and middle layer code and found the function sd_prep_fn which seems to convert a request to a scsi command. I want to know when this function sd_prep_fn gets invoked.
It seems sd_probe_async invokes blk_queue_prep_rq <http://lxr.linux.no/linux+*/+code=blk_queue_prep_rq>(sdp <http://lxr.linux.no/linux+*/+code=sdp>->request_queue <http://lxr.linux.no/linux+*/+code=request_queue>, sd_prep_fn <http://lxr.linux.no/linux+*/+code=sd_prep_fn>); Further following code is invoking the prep_rq_fn which is the blk_peek_request http://lxr.linux.no/#linux+v3.1/block/blk-core.c#L1879 and blk_peek_request is getting invoked from scsi_request_fn http://lxr.linux.no/#linux+v3.1/drivers/scsi/scsi_lib.c#L1493 scsi_request_fn is registered with the block layer as a request function at the following code http://lxr.linux.no/#linux+v3.1/drivers/scsi/scsi_lib.c#L1688 And scsi_alloc_queue is invoked from scsi_alloc_sdev http://lxr.linux.no/#linux+v3.1/drivers/scsi/scsi_scan.c#L238 scsi_alloc_sdev is invoked as a part of scsi lun discovery from lots of places http://lxr.linux.no/#linux+v3.1/drivers/scsi/scsi_scan.c#L1004 http://lxr.linux.no/#linux+v3.1/drivers/scsi/scsi_scan.c#L1306 The confusion I have is that the sd.c upper layer driver has not registered for a request function using blk_init_queue Any help would be appreciated. Thanks Sumeet
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies