blk-mq: remove the done argument to blk_execute_rq_nowait
authorChristoph Hellwig <hch@lst.de>
Tue, 24 May 2022 12:15:30 +0000 (14:15 +0200)
committerJens Axboe <axboe@kernel.dk>
Sat, 28 May 2022 12:15:27 +0000 (06:15 -0600)
Let the caller set it together with the end_io_data instead of passing
a pointless argument.  Note the the target code did in fact already
set it and then just overrode it again by calling blk_execute_rq_nowait.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Keith Busch <kbusch@kernel.org>
Reviewed-by: Kanchan Joshi <joshi.k@samsung.com>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Link: https://lore.kernel.org/r/20220524121530.943123-4-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 files changed:
block/blk-mq.c
drivers/block/sx8.c
drivers/nvme/host/core.c
drivers/nvme/host/ioctl.c
drivers/nvme/host/pci.c
drivers/nvme/target/passthru.c
drivers/scsi/scsi_error.c
drivers/scsi/sg.c
drivers/scsi/st.c
drivers/scsi/ufs/ufshpb.c
drivers/target/target_core_pscsi.c
include/linux/blk-mq.h

index 28b3e6d..8e78602 100644 (file)
@@ -1189,7 +1189,6 @@ static void blk_add_rq_to_plug(struct blk_plug *plug, struct request *rq)
  * blk_execute_rq_nowait - insert a request to I/O scheduler for execution
  * @rq:                request to insert
  * @at_head:    insert request at head or tail of queue
- * @done:      I/O completion handler
  *
  * Description:
  *    Insert a fully prepared request at the back of the I/O scheduler queue
@@ -1198,13 +1197,11 @@ static void blk_add_rq_to_plug(struct blk_plug *plug, struct request *rq)
  * Note:
  *    This function will invoke @done directly if the queue is dead.
  */
-void blk_execute_rq_nowait(struct request *rq, bool at_head, rq_end_io_fn *done)
+void blk_execute_rq_nowait(struct request *rq, bool at_head)
 {
        WARN_ON(irqs_disabled());
        WARN_ON(!blk_rq_is_passthrough(rq));
 
-       rq->end_io = done;
-
        blk_account_io_start(rq);
        if (current->plug)
                blk_add_rq_to_plug(current->plug, rq);
index b361583..63b4f64 100644 (file)
@@ -540,7 +540,7 @@ static int carm_array_info (struct carm_host *host, unsigned int array_idx)
        spin_unlock_irq(&host->lock);
 
        DPRINTK("blk_execute_rq_nowait, tag == %u\n", rq->tag);
-       blk_execute_rq_nowait(rq, true, NULL);
+       blk_execute_rq_nowait(rq, true);
 
        return 0;
 
@@ -579,7 +579,7 @@ static int carm_send_special (struct carm_host *host, carm_sspc_t func)
        crq->msg_bucket = (u32) rc;
 
        DPRINTK("blk_execute_rq_nowait, tag == %u\n", rq->tag);
-       blk_execute_rq_nowait(rq, true, NULL);
+       blk_execute_rq_nowait(rq, true);
 
        return 0;
 }
index 72f7c95..727c12c 100644 (file)
@@ -1206,9 +1206,10 @@ static void nvme_keep_alive_work(struct work_struct *work)
        nvme_init_request(rq, &ctrl->ka_cmd);
 
        rq->timeout = ctrl->kato * HZ;
+       rq->end_io = nvme_keep_alive_end_io;
        rq->end_io_data = ctrl;
        rq->rq_flags |= RQF_QUIET;
-       blk_execute_rq_nowait(rq, false, nvme_keep_alive_end_io);
+       blk_execute_rq_nowait(rq, false);
 }
 
 static void nvme_start_keep_alive(struct nvme_ctrl *ctrl)
index 096b1b4..a2e89db 100644 (file)
@@ -453,6 +453,7 @@ static int nvme_uring_cmd_io(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
                        blk_flags);
        if (IS_ERR(req))
                return PTR_ERR(req);
+       req->end_io = nvme_uring_cmd_end_io;
        req->end_io_data = ioucmd;
 
        /* to free bio on completion, as req->bio will be null at that time */
@@ -461,7 +462,7 @@ static int nvme_uring_cmd_io(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
        pdu->meta_buffer = nvme_to_user_ptr(d.metadata);
        pdu->meta_len = d.metadata_len;
 
-       blk_execute_rq_nowait(req, 0, nvme_uring_cmd_end_io);
+       blk_execute_rq_nowait(req, false);
        return -EIOCBQUEUED;
 }
 
index 5a98a7d..0403b6d 100644 (file)
@@ -1438,9 +1438,10 @@ static enum blk_eh_timer_return nvme_timeout(struct request *req, bool reserved)
        }
        nvme_init_request(abort_req, &cmd);
 
+       abort_req->end_io = abort_endio;
        abort_req->end_io_data = NULL;
        abort_req->rq_flags |= RQF_QUIET;
-       blk_execute_rq_nowait(abort_req, false, abort_endio);
+       blk_execute_rq_nowait(abort_req, false);
 
        /*
         * The aborted req will be completed on receiving the abort req.
@@ -2485,12 +2486,15 @@ static int nvme_delete_queue(struct nvme_queue *nvmeq, u8 opcode)
                return PTR_ERR(req);
        nvme_init_request(req, &cmd);
 
+       if (opcode == nvme_admin_delete_cq)
+               req->end_io = nvme_del_cq_end;
+       else
+               req->end_io = nvme_del_queue_end;
        req->end_io_data = nvmeq;
 
        init_completion(&nvmeq->delete_done);
        req->rq_flags |= RQF_QUIET;
-       blk_execute_rq_nowait(req, false, opcode == nvme_admin_delete_cq ?
-                       nvme_del_cq_end : nvme_del_queue_end);
+       blk_execute_rq_nowait(req, false);
        return 0;
 }
 
index 5247c24..3cc4d67 100644 (file)
@@ -285,8 +285,9 @@ static void nvmet_passthru_execute_cmd(struct nvmet_req *req)
                req->p.rq = rq;
                queue_work(nvmet_wq, &req->p.work);
        } else {
+               rq->end_io = nvmet_passthru_req_done;
                rq->end_io_data = req;
-               blk_execute_rq_nowait(rq, false, nvmet_passthru_req_done);
+               blk_execute_rq_nowait(rq, false);
        }
 
        if (ns)
index cdaca13..49ef864 100644 (file)
@@ -2039,12 +2039,13 @@ static void scsi_eh_lock_door(struct scsi_device *sdev)
        scmd->cmnd[4] = SCSI_REMOVAL_PREVENT;
        scmd->cmnd[5] = 0;
        scmd->cmd_len = COMMAND_SIZE(scmd->cmnd[0]);
+       scmd->allowed = 5;
 
        req->rq_flags |= RQF_QUIET;
        req->timeout = 10 * HZ;
-       scmd->allowed = 5;
+       req->end_io = eh_lock_door_done;
 
-       blk_execute_rq_nowait(req, true, eh_lock_door_done);
+       blk_execute_rq_nowait(req, true);
 }
 
 /**
index cbffa71..118c7b4 100644 (file)
@@ -831,7 +831,8 @@ sg_common_write(Sg_fd * sfp, Sg_request * srp,
 
        srp->rq->timeout = timeout;
        kref_get(&sfp->f_ref); /* sg_rq_end_io() does kref_put(). */
-       blk_execute_rq_nowait(srp->rq, at_head, sg_rq_end_io);
+       srp->rq->end_io = sg_rq_end_io;
+       blk_execute_rq_nowait(srp->rq, at_head);
        return 0;
 }
 
index 56a093a..850172a 100644 (file)
@@ -579,9 +579,10 @@ static int st_scsi_execute(struct st_request *SRpnt, const unsigned char *cmd,
        memcpy(scmd->cmnd, cmd, scmd->cmd_len);
        req->timeout = timeout;
        scmd->allowed = retries;
+       req->end_io = st_scsi_execute_end;
        req->end_io_data = SRpnt;
 
-       blk_execute_rq_nowait(req, true, st_scsi_execute_end);
+       blk_execute_rq_nowait(req, true);
        return 0;
 }
 
index 8882b47..002c19c 100644 (file)
@@ -671,11 +671,12 @@ static void ufshpb_execute_umap_req(struct ufshpb_lu *hpb,
 
        req->timeout = 0;
        req->end_io_data = umap_req;
+       req->end_io = ufshpb_umap_req_compl_fn;
 
        ufshpb_set_unmap_cmd(scmd->cmnd, rgn);
        scmd->cmd_len = HPB_WRITE_BUFFER_CMD_LENGTH;
 
-       blk_execute_rq_nowait(req, true, ufshpb_umap_req_compl_fn);
+       blk_execute_rq_nowait(req, true);
 
        hpb->stats.umap_req_cnt++;
 }
@@ -707,6 +708,7 @@ static int ufshpb_execute_map_req(struct ufshpb_lu *hpb,
        blk_rq_append_bio(req, map_req->bio);
 
        req->end_io_data = map_req;
+       req->end_io = ufshpb_map_req_compl_fn;
 
        if (unlikely(last))
                mem_size = hpb->last_srgn_entries * HPB_ENTRY_SIZE;
@@ -716,7 +718,7 @@ static int ufshpb_execute_map_req(struct ufshpb_lu *hpb,
                                map_req->rb.srgn_idx, mem_size);
        scmd->cmd_len = HPB_READ_BUFFER_CMD_LENGTH;
 
-       blk_execute_rq_nowait(req, true, ufshpb_map_req_compl_fn);
+       blk_execute_rq_nowait(req, true);
 
        hpb->stats.map_req_cnt++;
        return 0;
index bb3fb18..e6a967d 100644 (file)
@@ -972,8 +972,7 @@ pscsi_execute_cmd(struct se_cmd *cmd)
 
        cmd->priv = scmd->cmnd;
 
-       blk_execute_rq_nowait(req, cmd->sam_task_attr == TCM_HEAD_TAG,
-                       pscsi_req_done);
+       blk_execute_rq_nowait(req, cmd->sam_task_attr == TCM_HEAD_TAG);
 
        return 0;
 
index 9f07061..e2d9daf 100644 (file)
@@ -969,8 +969,7 @@ int blk_rq_unmap_user(struct bio *);
 int blk_rq_map_kern(struct request_queue *, struct request *, void *,
                unsigned int, gfp_t);
 int blk_rq_append_bio(struct request *rq, struct bio *bio);
-void blk_execute_rq_nowait(struct request *rq, bool at_head,
-               rq_end_io_fn *end_io);
+void blk_execute_rq_nowait(struct request *rq, bool at_head);
 blk_status_t blk_execute_rq(struct request *rq, bool at_head);
 
 struct req_iterator {