Skip to content

Commit 00cfc05

Browse files
calebsanderaxboe
authored andcommitted
ublk: store req in ublk_uring_cmd_pdu for ublk_cmd_tw_cb()
Pass struct request *rq to ublk_cmd_tw_cb() through ublk_uring_cmd_pdu, mirroring how it works for ublk_cmd_list_tw_cb(). This saves some pointer dereferences, as well as the bounds check in blk_mq_tag_to_rq(). Signed-off-by: Caleb Sander Mateos <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jens Axboe <[email protected]>
1 parent 108d8ae commit 00cfc05

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

drivers/block/ublk_drv.c

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,10 @@ struct ublk_uring_cmd_pdu {
8989
* to avoid extra pre-allocation, and uring_cmd payload is always
9090
* free for us
9191
*/
92-
struct request *req_list;
92+
union {
93+
struct request *req;
94+
struct request *req_list;
95+
};
9396

9497
/*
9598
* The following two are valid in this cmd whole lifetime, and
@@ -1268,18 +1271,17 @@ static void ublk_cmd_tw_cb(struct io_uring_cmd *cmd,
12681271
{
12691272
struct ublk_uring_cmd_pdu *pdu = ublk_get_uring_cmd_pdu(cmd);
12701273
struct ublk_queue *ubq = pdu->ubq;
1271-
int tag = pdu->tag;
1272-
struct request *req = blk_mq_tag_to_rq(
1273-
ubq->dev->tag_set.tags[ubq->q_id], tag);
12741274

1275-
ublk_dispatch_req(ubq, req, issue_flags);
1275+
ublk_dispatch_req(ubq, pdu->req, issue_flags);
12761276
}
12771277

12781278
static void ublk_queue_cmd(struct ublk_queue *ubq, struct request *rq)
12791279
{
1280-
struct ublk_io *io = &ubq->ios[rq->tag];
1280+
struct io_uring_cmd *cmd = ubq->ios[rq->tag].cmd;
1281+
struct ublk_uring_cmd_pdu *pdu = ublk_get_uring_cmd_pdu(cmd);
12811282

1282-
io_uring_cmd_complete_in_task(io->cmd, ublk_cmd_tw_cb);
1283+
pdu->req = rq;
1284+
io_uring_cmd_complete_in_task(cmd, ublk_cmd_tw_cb);
12831285
}
12841286

12851287
static void ublk_cmd_list_tw_cb(struct io_uring_cmd *cmd,

0 commit comments

Comments
 (0)