Re: can generic_make_request in 2.4 kernel sleep?

From: Jens Axboe
Date: Sun Feb 29 2004 - 04:51:21 EST


On Sat, Feb 28 2004, Ming Zhang wrote:
> Hi, I have a quick question.
>
> In 2.4 kernel, can generic_make_request sleep?

yes

> I read the 2.4.24 kernel and find that there is printk in it. so i
> assume it can sleep. if so, why the per queue make_request_fn can not
> sleep base on the LDD book? and i do not see any place that the
> io_request_lock is held. is this lock removed from system? or we do not
> need this lock at this place any more?
>
> and in md code, it use blk_queue_make_request to use its own request_fn
> instead a queue, for example, in raid1_make_request(), it calls
> raid1_alloc_r1ch() which also call schedule() if need, then this own
> request_fn can sleep?
>
> i think i am little confused about the LDD (linux device driver 2nd)
> book and the new kernel code. can anybody point out some latest
> reference for me?

->make_request_fn() is not entered with the queue/io_request_lock. It
can sleep, it's not recommended since on writeout you are blocking
kswapd/bdflush.

--
Jens Axboe

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/