2001-04-17 16:41:32

by Peter T. Breuer

[permalink] [raw]
Subject: block devices don't work without plugging in 2.4.3

Well, anyway, as far as I can tell, the following has been lost from
__make_request() in ll_rw_blk.c since the 2.4.0 days:

out:
- if (!q->plugged)
- (q->request_fn)(q);
if (freereq)

The result appears to be that if a block device has called
blk_queue_pluggable() to register a no-op plug_fn, then
q->plugged will never be set (it's the duty of the plug_fn),
and the devices registered request function wil never be called.

This behaviour is distinct from 2.4.0, where registering a
no-op made things work fine.

Is the policy now supposed to be that we do some more work
in the "no-op"? What am I supposed to do if I don't want
plugging(1)(2)?

(1) goes away and looks ....
(2) actually, I do want plugging, but I like to keep the
no-plug option around so that I can benchmark the difference
and also provide a very conservative option setting.

Peter


2001-04-17 17:05:07

by Jens Axboe

[permalink] [raw]
Subject: Re: block devices don't work without plugging in 2.4.3

On Tue, Apr 17 2001, Peter T. Breuer wrote:
> Well, anyway, as far as I can tell, the following has been lost from
> __make_request() in ll_rw_blk.c since the 2.4.0 days:
>
> out:
> - if (!q->plugged)
> - (q->request_fn)(q);
> if (freereq)
>
> The result appears to be that if a block device has called
> blk_queue_pluggable() to register a no-op plug_fn, then
> q->plugged will never be set (it's the duty of the plug_fn),
> and the devices registered request function wil never be called.
>
> This behaviour is distinct from 2.4.0, where registering a
> no-op made things work fine.
>
> Is the policy now supposed to be that we do some more work
> in the "no-op"? What am I supposed to do if I don't want
> plugging(1)(2)?
>
> (1) goes away and looks ....
> (2) actually, I do want plugging, but I like to keep the
> no-plug option around so that I can benchmark the difference
> and also provide a very conservative option setting.

Not using plugging is dead, blk_queue_pluggable has been killed in the
current 2.4.4-pre tree.

--
Jens Axboe