sd_prep_fn

sumeet gandhare sumeetgandhare at gmail.com
Thu Nov 10 06:20:33 EST 2011


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20111110/e5c61251/attachment.html 


More information about the Kernelnewbies mailing list