Re: NBD Cleanup patch and bugfix in ll_rw_blk.c

From: Steve Whitehouse (
Date: Wed Feb 28 2001 - 16:27:39 EST


> On Sun, 25 Feb 2001, Steve Whitehouse wrote:
> >
> > Here is a new version of the patch I recently sent to the list with some
> > NBD cleanups and a bug fix in ll_rw_blk.c. The changes to NBD have Pavel
> > Machek's approval as I've left out the two changes as he suggested.
> >
> > The bug fix in ll_rw_blk.c prevents hangs when using block devices which
> > don't have plugging functions,
> I'm convinced that the right fix is to just make everybody have plugging
> functions.
I'm working on that. Once I've discovered why enabling plugging causes nbd
to hang, then I'll send a patch assuming nobody beats me to it :-)

> Right now, who doesn't? The fix is unbelievably ugly, AND can break real
> drivers that _do_ have plugging functions (where they get surprised by
> having their request function called several times per plug just because
> somebody unplugged them and new requests came in).
> Just fix ndb instead.
> Linus
I tested the patch with a printk() which printed whenever the new call to the
request function was triggered. It didn't happen once in normal fs use
with ext2 on a scsi disk. From the code I think its not even possible for
this to be called at all for a device which has plugging. For a plugged
device when I/O comes in, there appear to be only two cases:

 - Device queue empty. Device gets plugged. New request_fn call not called
 - Device queue not empty. New I/O added to back of queue. New request_fn
   not called (it only gets called when the I/O is added to the front of
   the queue).

I think nbd is the only device which doesn't use plugging at the
moment (from a quick grep of the kernel source),


To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

This archive was generated by hypermail 2b29 : Wed Feb 28 2001 - 21:00:17 EST