Re: How to freeze 2.0.31 pre7 :(

Alan Cox (alan@lxorguk.ukuu.org.uk)
Fri, 22 Aug 1997 23:13:57 +0100 (BST)


> 2) I/O request layer solely performs the function of:
>
> a) Accepting calls in from clients, using the generic
> block device I/O tags, call them buffer_head or whatever,
> point remains the same
> b) Queue it
> c) Schedule to device driver
> d) Call back when done or error

This violates the Cox & Torvalds theses that midlayers are evil[1]. The
I/O layer should throw it straight at the driver. If the driver chooses
to defer it or do scheduling (as most would) then it can call

io_schedule(mydev,myqueue,thisrequest)

or similar. There are devices out there that work best if you simply
slam requests into them as fast as possible. Its also sometimes worth
triming every last clock of latency on an idle device by doing

if(!busy)
do_it_now();
else
{
io_schedule();
/* Which will then do_it_now()..

[1] and Zubkoff and a lot of others ;)

Alan