Re: libata / scsi separation

Matthew Wilcox
2008-12-10T15:25:03Z

On Wed, Dec 10, 2008 at 12:44:51PM +0900, Tejun Heo wrote:
> >> and thus have SG on the host bus side in mode cases
> >> but never on the device side.
> >
> > SG == scatter-gather? I'm not sure why that is specific to rotating media.
> > Or is this referring to "SCSI-generic" pass through?
>
> I was talking about scatter-gather. All the IO commands are about one
> continuous extent of data on the device and the whole stack from the
> bio is built that way and the overhead of libata is minute compared to
> the whole thing including emitting single command and receiving
> completion for each 4k transfer.

I think what Tejun means is add a new command, say READ_SG which would
transfer a page of LBA ranges (see how TRIM works for details), then the
drive would do a single transfer which contained the data from all those
ranges.

This would work, but (ignoring the political / standardisation efforts
required to make this happen), this is just a cop-out. When networking
people were first faced with gigabit, they tried the same thing (oooh,
9000 byte packets, oooh, TCP Offload, etc), all in the name of passing
larger amounts of data to the card in a single transaction so they
didn't have to fix their per-transaction overheads.

Users weren't interested. They wanted to keep sending 1500 byte packets
(because most equipment couldn't handle jumbo frames) and they wanted
netfilter and SACK and all the other goodies that the Linux networking
stack offered and the card's TCP stack didn't.

We should stop denying that users actually want to do 4k IOs and just
get on with fixing the storage stack to cope with lots of them.

--
Matthew Wilcox Intel Open Source Technology Centre
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours. We can't possibly take such
a retrograde step."