The iterative update to the previous version taking into account review comments. Background: 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 actually need it, and removing the software layering violation that was required to use that mechnaism. Changes since v3: The complete state is moved to its own field separate from the non-atomic scsi_cmnd "flags" field. Code comments added to describe the more obscure handling for fake timeout injection. 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 | 13 ++++++++++++- include/linux/blk-mq.h | 16 +--------------- include/scsi/scsi_cmnd.h | 4 ++++ 5 files changed, 32 insertions(+), 32 deletions(-) -- 2.14.4