With the support in 5.16-rc1 for allocating and completing batches of IO, the one missing piece is passing down a list of requests for issue. Drivers can take advantage of this by defining an mq_ops->queue_rqs() hook. This implements it for NVMe, allowing copy of multiple commands in one swoop. This is good for around a 500K IOPS/core improvement in my testing, which is around a 5-6% improvement in efficiency. Note to Christoph - I kept the copy helper, since it's used in 3 spots and I _think_ you ended up being fine with that... Changes since v3: - Use nvme_sq_copy_cmd() in nvme_submit_cmds() - Add reviewed-by's -- Jens Axboe