]> www.infradead.org Git - users/jedix/linux-maple.git/commit
blk-mq: fix racy updates of rq->errors
authorChristoph Hellwig <hch@lst.de>
Tue, 30 May 2017 17:36:32 +0000 (10:36 -0700)
committerChuck Anderson <chuck.anderson@oracle.com>
Thu, 1 Jun 2017 20:40:57 +0000 (13:40 -0700)
commit2d5619678cfd8c152357ddf9c901f8a416e326cd
tree43b9d575e1caeb2dc89baa27b045ad245633989c
parent620ca4a765ab170a2cc32e1b612ba34cd98a157f
blk-mq: fix racy updates of rq->errors

blk_mq_complete_request may be a no-op if the request has already
been completed by others means (e.g. a timeout or cancellation), but
currently drivers have to set rq->errors before calling
blk_mq_complete_request, which might leave us with the wrong error value.

Add an error parameter to blk_mq_complete_request so that we can
defer setting rq->errors until we known we won the race to complete the
request.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Sagi Grimberg <sagig@mellanox.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
(cherry picked from commit f4829a9b7a61e159367350008a608b062c4f6840)

Orabug: 25130845

Signed-off-by: Ashok Vairavan <ashok.vairavan@oracle.com>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
block/blk-mq.c
drivers/block/loop.c
drivers/block/null_blk.c
drivers/block/virtio_blk.c
drivers/block/xen-blkfront.c
drivers/md/dm.c
drivers/scsi/scsi_lib.c
include/linux/blk-mq.h