Since e7871d3 we have a way to properly implement readv/writev for devices (legacy ->read and ->write are deprecated.). With read_iter and write_iter, writevs and readvs work just like the regular variants (think of the tty readv doing an internal read for an iov, getting data, then hanging for the next... yuck).