]> git.baikalelectronics.ru Git - kernel.git/commit
blk-mq: fix racy updates of rq->errors
authorChristoph Hellwig <hch@lst.de>
Sun, 27 Sep 2015 19:01:50 +0000 (21:01 +0200)
committerJens Axboe <axboe@fb.com>
Thu, 1 Oct 2015 08:10:55 +0000 (10:10 +0200)
commitfb50cad0be59d75226e6bec83bd30b5363094640
treea2f488a95324e0c0b558273f48b18413ab2fa221
parent28aea4cf971b7a62eac55eade5c1fb742739bc2c
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>
block/blk-mq.c
drivers/block/loop.c
drivers/block/null_blk.c
drivers/block/nvme-core.c
drivers/block/virtio_blk.c
drivers/block/xen-blkfront.c
drivers/scsi/scsi_lib.c
include/linux/blk-mq.h