my kernel version: linux 2.6.34.14

in block/blk-core.c file,  blk_alloc_queue_node() function:
struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
{
...
    setup_timer(&q->timeout, blk_rq_timed_out_timer, (unsigned long) q);
...
}

when bio request timeout, execute blk_rq_timed_out_timer() function, for each 
req in q->request_list, execute blk_rq_timed_out() function, this two function 
are defined in  blk-timeout.c file:


static void blk_rq_timed_out(struct request *req)
{
...
    ret = q->rq_timed_out_fn(req);
    switch (ret) {
...
    }
}

i can't find where the ->rq_timed_out_fn defined for block device, such as 
drivers/block/hd.c
but i can find that the ->rq_timed_out_fn for scsi device, in 
drivers/scsi/scsi_transport_fc.c, line 3965

Reply via email to