The only real change since v2 is a prep patch that relocates the rq list macros to blk-mq.h since that's where 'struct request' is defined. Patch 3 removes the 'next' parameter since it is trivially obtainable via 'rq->rq_next' anyway. Otherwise, the series is the same as v2 and tested with lots of random error injection in the prep path. The same errors would have lost requests in the current driver, but is successful with this series. Keith Busch (4): block: move rq_list macros to blk-mq.h block: introduce rq_list_for_each_safe macro block: introduce rq_list_move nvme-pci: fix queue_rqs list splitting drivers/nvme/host/pci.c | 28 +++++++++++------------ fs/io_uring.c | 2 +- include/linux/blk-mq.h | 50 +++++++++++++++++++++++++++++++++++++++++ include/linux/blkdev.h | 29 ------------------------ 4 files changed, 65 insertions(+), 44 deletions(-) -- 2.25.4