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ÿôèº{.nÇ+?·?®??+%?Ëÿ±éݶ¥?wÿº{.nÇ+?·¥?{±ýûz÷¥þ)í?æèw*jg¬±¨¶????Ý¢jÿ¾«þG«?éÿ¢¸¢·¦j:+v?¨?wèjØm¶?ÿþø¯ù®w¥þ?àþf£¢·h??â?úÿ?Ù¥