blk-mq: Drop blk_mq_ops.timeout 'reserved' arg

With new API blk_mq_is_reserved_rq() we can tell if a request is from
the reserved pool, so stop passing 'reserved' arg. There is actually
only a single user of that arg for all the callback implementations, which
can use blk_mq_is_reserved_rq() instead.

This will also allow us to stop passing the same 'reserved' around the
blk-mq iter functions next.

Signed-off-by: John Garry <john.garry@huawei.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Acked-by: Ulf Hansson <ulf.hansson@linaro.org> # For MMC
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Link: https://lore.kernel.org/r/1657109034-206040-4-git-send-email-john.garry@huawei.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
John Garry 2022-07-06 20:03:51 +08:00 committed by Jens Axboe
parent 99e48cd685
commit 9bdb4833dd
16 changed files with 19 additions and 28 deletions

View File

@ -1427,13 +1427,13 @@ bool blk_mq_queue_inflight(struct request_queue *q)
} }
EXPORT_SYMBOL_GPL(blk_mq_queue_inflight); EXPORT_SYMBOL_GPL(blk_mq_queue_inflight);
static void blk_mq_rq_timed_out(struct request *req, bool reserved) static void blk_mq_rq_timed_out(struct request *req)
{ {
req->rq_flags |= RQF_TIMED_OUT; req->rq_flags |= RQF_TIMED_OUT;
if (req->q->mq_ops->timeout) { if (req->q->mq_ops->timeout) {
enum blk_eh_timer_return ret; enum blk_eh_timer_return ret;
ret = req->q->mq_ops->timeout(req, reserved); ret = req->q->mq_ops->timeout(req);
if (ret == BLK_EH_DONE) if (ret == BLK_EH_DONE)
return; return;
WARN_ON_ONCE(ret != BLK_EH_RESET_TIMER); WARN_ON_ONCE(ret != BLK_EH_RESET_TIMER);
@ -1482,7 +1482,7 @@ static bool blk_mq_check_expired(struct request *rq, void *priv, bool reserved)
* from blk_mq_check_expired(). * from blk_mq_check_expired().
*/ */
if (blk_mq_req_expired(rq, next)) if (blk_mq_req_expired(rq, next))
blk_mq_rq_timed_out(rq, reserved); blk_mq_rq_timed_out(rq);
return true; return true;
} }

View File

@ -331,7 +331,7 @@ void bsg_remove_queue(struct request_queue *q)
} }
EXPORT_SYMBOL_GPL(bsg_remove_queue); EXPORT_SYMBOL_GPL(bsg_remove_queue);
static enum blk_eh_timer_return bsg_timeout(struct request *rq, bool reserved) static enum blk_eh_timer_return bsg_timeout(struct request *rq)
{ {
struct bsg_set *bset = struct bsg_set *bset =
container_of(rq->q->tag_set, struct bsg_set, tag_set); container_of(rq->q->tag_set, struct bsg_set, tag_set);

View File

@ -3357,12 +3357,11 @@ static int mtip_init_cmd(struct blk_mq_tag_set *set, struct request *rq,
return 0; return 0;
} }
static enum blk_eh_timer_return mtip_cmd_timeout(struct request *req, static enum blk_eh_timer_return mtip_cmd_timeout(struct request *req)
bool reserved)
{ {
struct driver_data *dd = req->q->queuedata; struct driver_data *dd = req->q->queuedata;
if (reserved) { if (blk_mq_is_reserved_rq(req)) {
struct mtip_cmd *cmd = blk_mq_rq_to_pdu(req); struct mtip_cmd *cmd = blk_mq_rq_to_pdu(req);
cmd->status = BLK_STS_TIMEOUT; cmd->status = BLK_STS_TIMEOUT;

View File

@ -393,8 +393,7 @@ static u32 req_to_nbd_cmd_type(struct request *req)
} }
} }
static enum blk_eh_timer_return nbd_xmit_timeout(struct request *req, static enum blk_eh_timer_return nbd_xmit_timeout(struct request *req)
bool reserved)
{ {
struct nbd_cmd *cmd = blk_mq_rq_to_pdu(req); struct nbd_cmd *cmd = blk_mq_rq_to_pdu(req);
struct nbd_device *nbd = cmd->nbd; struct nbd_device *nbd = cmd->nbd;

View File

@ -1578,7 +1578,7 @@ static int null_poll(struct blk_mq_hw_ctx *hctx, struct io_comp_batch *iob)
return nr; return nr;
} }
static enum blk_eh_timer_return null_timeout_rq(struct request *rq, bool res) static enum blk_eh_timer_return null_timeout_rq(struct request *rq)
{ {
struct blk_mq_hw_ctx *hctx = rq->mq_hctx; struct blk_mq_hw_ctx *hctx = rq->mq_hctx;
struct nullb_cmd *cmd = blk_mq_rq_to_pdu(rq); struct nullb_cmd *cmd = blk_mq_rq_to_pdu(rq);

View File

@ -116,8 +116,7 @@ static enum blk_eh_timer_return mmc_cqe_timed_out(struct request *req)
} }
} }
static enum blk_eh_timer_return mmc_mq_timed_out(struct request *req, static enum blk_eh_timer_return mmc_mq_timed_out(struct request *req)
bool reserved)
{ {
struct request_queue *q = req->q; struct request_queue *q = req->q;
struct mmc_queue *mq = q->queuedata; struct mmc_queue *mq = q->queuedata;

View File

@ -862,8 +862,7 @@ static void apple_nvme_disable(struct apple_nvme *anv, bool shutdown)
} }
} }
static enum blk_eh_timer_return apple_nvme_timeout(struct request *req, static enum blk_eh_timer_return apple_nvme_timeout(struct request *req)
bool reserved)
{ {
struct apple_nvme_iod *iod = blk_mq_rq_to_pdu(req); struct apple_nvme_iod *iod = blk_mq_rq_to_pdu(req);
struct apple_nvme_queue *q = iod->q; struct apple_nvme_queue *q = iod->q;

View File

@ -2565,8 +2565,7 @@ nvme_fc_error_recovery(struct nvme_fc_ctrl *ctrl, char *errmsg)
nvme_reset_ctrl(&ctrl->ctrl); nvme_reset_ctrl(&ctrl->ctrl);
} }
static enum blk_eh_timer_return static enum blk_eh_timer_return nvme_fc_timeout(struct request *rq)
nvme_fc_timeout(struct request *rq, bool reserved)
{ {
struct nvme_fc_fcp_op *op = blk_mq_rq_to_pdu(rq); struct nvme_fc_fcp_op *op = blk_mq_rq_to_pdu(rq);
struct nvme_fc_ctrl *ctrl = op->ctrl; struct nvme_fc_ctrl *ctrl = op->ctrl;

View File

@ -1344,7 +1344,7 @@ static void nvme_warn_reset(struct nvme_dev *dev, u32 csts)
"Try \"nvme_core.default_ps_max_latency_us=0 pcie_aspm=off\" and report a bug\n"); "Try \"nvme_core.default_ps_max_latency_us=0 pcie_aspm=off\" and report a bug\n");
} }
static enum blk_eh_timer_return nvme_timeout(struct request *req, bool reserved) static enum blk_eh_timer_return nvme_timeout(struct request *req)
{ {
struct nvme_iod *iod = blk_mq_rq_to_pdu(req); struct nvme_iod *iod = blk_mq_rq_to_pdu(req);
struct nvme_queue *nvmeq = iod->nvmeq; struct nvme_queue *nvmeq = iod->nvmeq;

View File

@ -2013,8 +2013,7 @@ static void nvme_rdma_complete_timed_out(struct request *rq)
nvmf_complete_timed_out_request(rq); nvmf_complete_timed_out_request(rq);
} }
static enum blk_eh_timer_return static enum blk_eh_timer_return nvme_rdma_timeout(struct request *rq)
nvme_rdma_timeout(struct request *rq, bool reserved)
{ {
struct nvme_rdma_request *req = blk_mq_rq_to_pdu(rq); struct nvme_rdma_request *req = blk_mq_rq_to_pdu(rq);
struct nvme_rdma_queue *queue = req->queue; struct nvme_rdma_queue *queue = req->queue;

View File

@ -2321,8 +2321,7 @@ static void nvme_tcp_complete_timed_out(struct request *rq)
nvmf_complete_timed_out_request(rq); nvmf_complete_timed_out_request(rq);
} }
static enum blk_eh_timer_return static enum blk_eh_timer_return nvme_tcp_timeout(struct request *rq)
nvme_tcp_timeout(struct request *rq, bool reserved)
{ {
struct nvme_tcp_request *req = blk_mq_rq_to_pdu(rq); struct nvme_tcp_request *req = blk_mq_rq_to_pdu(rq);
struct nvme_ctrl *ctrl = &req->queue->ctrl->ctrl; struct nvme_ctrl *ctrl = &req->queue->ctrl->ctrl;

View File

@ -3145,7 +3145,7 @@ out:
* BLK_EH_DONE if the request is handled or terminated * BLK_EH_DONE if the request is handled or terminated
* by the driver. * by the driver.
*/ */
enum blk_eh_timer_return dasd_times_out(struct request *req, bool reserved) enum blk_eh_timer_return dasd_times_out(struct request *req)
{ {
struct dasd_block *block = req->q->queuedata; struct dasd_block *block = req->q->queuedata;
struct dasd_device *device; struct dasd_device *device;

View File

@ -795,7 +795,7 @@ void dasd_free_device(struct dasd_device *);
struct dasd_block *dasd_alloc_block(void); struct dasd_block *dasd_alloc_block(void);
void dasd_free_block(struct dasd_block *); void dasd_free_block(struct dasd_block *);
enum blk_eh_timer_return dasd_times_out(struct request *req, bool reserved); enum blk_eh_timer_return dasd_times_out(struct request *req);
void dasd_enable_device(struct dasd_device *); void dasd_enable_device(struct dasd_device *);
void dasd_set_target_state(struct dasd_device *, int); void dasd_set_target_state(struct dasd_device *, int);

View File

@ -318,7 +318,6 @@ void scsi_eh_scmd_add(struct scsi_cmnd *scmd)
/** /**
* scsi_timeout - Timeout function for normal scsi commands. * scsi_timeout - Timeout function for normal scsi commands.
* @req: request that is timing out. * @req: request that is timing out.
* @reserved: whether the request is a reserved request.
* *
* Notes: * Notes:
* We do not need to lock this. There is the potential for a race * We do not need to lock this. There is the potential for a race
@ -326,7 +325,7 @@ void scsi_eh_scmd_add(struct scsi_cmnd *scmd)
* normal completion function determines that the timer has already * normal completion function determines that the timer has already
* fired, then it mustn't do anything. * fired, then it mustn't do anything.
*/ */
enum blk_eh_timer_return scsi_timeout(struct request *req, bool reserved) enum blk_eh_timer_return scsi_timeout(struct request *req)
{ {
struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(req); struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(req);
enum blk_eh_timer_return rtn = BLK_EH_DONE; enum blk_eh_timer_return rtn = BLK_EH_DONE;

View File

@ -72,8 +72,7 @@ extern void scsi_exit_devinfo(void);
/* scsi_error.c */ /* scsi_error.c */
extern void scmd_eh_abort_handler(struct work_struct *work); extern void scmd_eh_abort_handler(struct work_struct *work);
extern enum blk_eh_timer_return scsi_timeout(struct request *req, extern enum blk_eh_timer_return scsi_timeout(struct request *req);
bool reserved);
extern int scsi_error_handler(void *host); extern int scsi_error_handler(void *host);
extern enum scsi_disposition scsi_decide_disposition(struct scsi_cmnd *cmd); extern enum scsi_disposition scsi_decide_disposition(struct scsi_cmnd *cmd);
extern void scsi_eh_wakeup(struct Scsi_Host *shost); extern void scsi_eh_wakeup(struct Scsi_Host *shost);

View File

@ -575,7 +575,7 @@ struct blk_mq_ops {
/** /**
* @timeout: Called on request timeout. * @timeout: Called on request timeout.
*/ */
enum blk_eh_timer_return (*timeout)(struct request *, bool); enum blk_eh_timer_return (*timeout)(struct request *);
/** /**
* @poll: Called to poll for completion of a specific tag. * @poll: Called to poll for completion of a specific tag.