From: Jens Axboe <axboe@suse.de> To: "Peter T. Breuer" <ptb@it.uc3m.es> Subject: Re: block devices don't work without plugging in 2.4.3 Date: Thu, 19 Apr 2001 12:51:40 +0200 Cc: linux kernel <linux-kernel@vger.kernel.org> On Thu, Apr 19 2001, Peter T. Breuer wrote: > Sorry to repeat .. I didn't see this go out on the list and I haven't > had any reply. So let's ask again. Is this a new coding error in ll_rw_blk? > > ----------------- > > The following has been lost from __make_request() in ll_rw_blk.c since > 2.4.2 (incl): > > out: > - if (!q->plugged) > - (q->request_fn)(q); > if (freereq) > > The result is that a block device that doesn't do plugging doesn't > work. > > If it 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 will never be called. > > This behaviour is distinct from 2.4.0, where registering a no-op > plug_fn made things work fine. > > Is this a coding oversight? Check the archives, I replied to this days ago. But since I'm taking the subject up anyway, let me expand on it a bit further. Not using plugging is gone, blk_queue_pluggable has been removed from the current 2.4.4-pre series if you check that. The main reason for doing this, is that there are generally no reasons for _not_ using plugging in the 2.4 series kernels. In 2.2 and previous, not using the builtin plugging was generally done to disable request merging. In 2.4, the queues have good control over what happens there with the back/front/request merging functions -- so drivers can just use that. Besides, the above hunk was removed because it is wrong. For devices using plugging, we would re-call the request_fn while the device was already active and serving requests. Not only is this a performance hit we don't need to take, it also gave problems on some drivers. -- Jens Axboe - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/