Hi, We now do decent batching of allocations for submit, but we still complete requests individually. This costs a lot of CPU cycles. This patchset adds support for collecting requests for completion, and then completing them as a batch. This includes things like freeing a batch of tags. A few rough edges in this patchset, but sending it out for comments so I can whip it into an upstreamable thing. As per patch 8, the wins here are pretty massive - 8-10% improvement in the peak IOPS. Changes since v1: - Rename ib -> iob for the batch - Add rq_list helpers - Change array -> tags_array naming - Drop nvme disposition patch - Rework the batched completion on the nvme side to be a lot cleaner - Add DEFINE_IO_BATCH helper - Move batch into blkdev.h instead of in fs.h -- Jens Axboe