On Sat, Mar 5, 2022 at 11:58 PM Christoph Hellwig <hch@xxxxxxxxxxxxx> 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