Re: NBD Cleanup patch and bugfix in ll_rw_blk.c

Jens Axboe
2001-02-28T21:38:48Z

On Wed, Feb 28 2001, Steve Whitehouse wrote:
> > > 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 :-)

Does anyone actually know why? Pavel didn't seem to, so maybe it
was just disabled on a hunch?

> 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).

Exactly right.

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

Probably right -- loop used to disable plugging to disallow merging
and tq_disk deadlocks, but now (-ac) it's a make_request style
driver instead.

--
Jens Axboe