On Sat, Mar 5, 2022 at 11:58 PM Christoph Hellwig hch@infradead.org wrote:
All of thee apply to all I/O. SG_IO is just a vector here as a particularly badly designed userspace interface that happens to get a decent test coverage.
I phrased that badly. I didn't mean SG_IO in particular, I meant any of the "generate special commands" interfaces.
In particular, I meant it as "not *regular* read/write commands".
It seems extremely wasteful to do a completely unnecessary bounce buffer operation for READ/WRITE commands.
Because honestly, if *those* are broken on some DMA device and they don't fill the buffer completely - despite claiming they do - then that device is so terminally broken that it's not even worth worrying about.
So I would expect that
(a) READ/WRITE actually fills the whole buffer
(b) READ/WRITE are the only ones where we care about performance at a bounce-buffer level
so it boils down to "do we still do this horrible memcpy even for regular IO commands"? Because that would, in my opinion, just be stupid.
Linus