Re: libata / scsi separation

Tejun Heo
2008-12-10T15:33:55Z

Hello, Matthew.

Matthew Wilcox wrote:
> 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.

Yes, I did.

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

And yeap we definitely should try to do that too but I don't think
RW_SG would be as useless as jumbo frames (much less compatibility
problem and no loss of functionality), and the actual hardware
overhead of issuing separate commands for each 4k segment is way
higher than anything we do along the block and low level driver layers
in terms of IO access, host bus and ATA (or SAS) bus overhead.

Thanks.

--
tejun