Re: Block device interface could use some work

Leonard N. Zubkoff (
Tue, 5 Nov 1996 20:54:33 -0800

Date: Tue, 5 Nov 1996 23:27:44 -0500
From: "Theodore Y. Ts'o" <tytso@MIT.EDU>

Yes, and it has to violate the abstraction barrier to do so. (That's
OK, it had to violate the abstraction barrier to issue multiple SCSI
commands simultaneously.) Unfortunately, because it was done in the
SCSI layer, it means that the IDE device driver doesn't have the benefit
of the changes the SCSI community made. Perhaps that's should be a hint
that all of this work should be done in the upper layer. That way both
the IDE and SCSI drivers would be able to take advantage of it.

Agreed. Here's another one for the list of abstraction problems: the code to
aggregate I/O requests in ll_rw_blk.c will combine requests up to 244 sectors
or so, whether or not these can actually be executed as a single I/O command by
the SCSI disk driver due to scatter/gather list length constraints. If
multiple SCSI commands are necessary, each subsequent one won't even be queued
until end_request is called from the previous command's completion processing.
There clearly has to be more communication/cooperation between the levels in
I/O processing to avoid such sub-optimal behavior.