The main objective is to remove the generic block layer's lock prefix currently required to transition a request to its completed state by shifting that expense to lower level drivers that need it, and removing the software layering violation that was required to use that mechnaism. Changes since v2: This one really plugs any gaps with fake timeout injection and additional coode comments included. Keith Busch (3): blk-mq: Return true if request was completed scsi: Do not rely on blk-mq for double completions blk-mq: Simplify request completion state block/blk-mq.c | 9 ++++----- drivers/scsi/scsi_error.c | 22 +++++++++++----------- drivers/scsi/scsi_lib.c | 6 +++++- include/linux/blk-mq.h | 16 +--------------- include/scsi/scsi_cmnd.h | 5 ++++- 5 files changed, 25 insertions(+), 33 deletions(-) -- 2.14.4