lkml.org 
[lkml]   [2009]   [Jun]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: generic_make_request fucntion for scsi_disk
On Sat, 20 Jun 2009, Ravish Tayal wrote:

> Hello,
>
> I am debugging Filesystem code for USB mass storage devices.

What part of the filesystem code are you debugging?

Your questions talk about four separate layers: the filesystem, the
block layer, the SCSI layer, and the usb-storage driver. Normally
people work on only one layer at a time.

Why are you concerned with more than one layer?

> I need
> help to figure out after generic_make_request how the request is
> placed to scsi disk (sd) requeset queue and than how sd qeueuecommand
> to usb_storeage thread. (in which context, is it system call context)
>
>
> inside generic_make_request
>
> 1. q = bdev_get_queue(bio->bi_bdev); [is sd.c register queue this
> queue or any other scsi file?]

See scsi_alloc_sdev() in scsi_scan.c. That's where the queue is
allocated.

> 2. ret = q->make_request_fn(q, bio); [which file contain this
> make_request_fn for scsi disk driver (generic)]

scsi_request_fn() is in scsi_lib.c. You could have found this out by
yourself very easily with grep. sd_prep_fn() is in sd.c.

> As per my unsderanding flow is like
> Fat_writepage ->_block_write_full_page --> blkdev_writepage-->
> block_write_full_page-->submit_bh-->generic_make_request ??? (sd ??)
> ----> queuecommand
>
> Please suggest any sorce file, link or document.

The most relevant source files are scsi_lib.c and scsi.c.

Alan Stern



\
 
 \ /
  Last update: 2009-06-20 16:41    [W:0.035 / U:0.044 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site