diff options
author | Christoph Hellwig <hch@lst.de> | 2018-11-10 11:30:46 +0300 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2018-11-10 18:03:47 +0300 |
commit | 1bee42438f32de405987b4a41b93624b184ae481 (patch) | |
tree | 949782b3b4160e29606401d04b33b8d2bf28f3c3 /drivers/block/skd_main.c | |
parent | 49f6613632f9504ae59ccbbb92a5b07f474d75b2 (diff) | |
download | linux-1bee42438f32de405987b4a41b93624b184ae481.tar.xz |
skd_main: don't use req->special
Add a retries field to the internal request structure instead, which gets
set to zero on the first submission.
Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'drivers/block/skd_main.c')
-rw-r--r-- | drivers/block/skd_main.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/block/skd_main.c b/drivers/block/skd_main.c index a0196477165f..a10d5736d8f7 100644 --- a/drivers/block/skd_main.c +++ b/drivers/block/skd_main.c @@ -181,6 +181,7 @@ struct skd_request_context { struct fit_completion_entry_v1 completion; struct fit_comp_error_info err_info; + int retries; blk_status_t status; }; @@ -495,6 +496,11 @@ static blk_status_t skd_mq_queue_rq(struct blk_mq_hw_ctx *hctx, if (unlikely(skdev->state != SKD_DRVR_STATE_ONLINE)) return skd_fail_all(q) ? BLK_STS_IOERR : BLK_STS_RESOURCE; + if (!(req->rq_flags & RQF_DONTPREP)) { + skreq->retries = 0; + req->rq_flags |= RQF_DONTPREP; + } + blk_mq_start_request(req); WARN_ONCE(tag >= skd_max_queue_depth, "%#x > %#x (nr_requests = %lu)\n", @@ -1426,7 +1432,7 @@ static void skd_resolve_req_exception(struct skd_device *skdev, break; case SKD_CHECK_STATUS_REQUEUE_REQUEST: - if ((unsigned long) ++req->special < SKD_MAX_RETRIES) { + if (++skreq->retries < SKD_MAX_RETRIES) { skd_log_skreq(skdev, skreq, "retry"); blk_mq_requeue_request(req, true); break; |