]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ublk: avoid redundant io->cmd in ublk_queue_cmd_list()
authorCaleb Sander Mateos <csander@purestorage.com>
Fri, 28 Mar 2025 18:04:10 +0000 (12:04 -0600)
committerJens Axboe <axboe@kernel.dk>
Fri, 28 Mar 2025 22:15:43 +0000 (16:15 -0600)
ublk_queue_cmd_list() loads io->cmd twice. The intervening stores
prevent the compiler from combining the loads. Since struct ublk_io *io
is only used to compute io->cmd, replace the variable with io->cmd.

Signed-off-by: Caleb Sander Mateos <csander@purestorage.com>
Link: https://lore.kernel.org/r/20250328180411.2696494-5-csander@purestorage.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/ublk_drv.c

index 9276d1fcc100fbf1c8ee35616d2b90855aaa3597..23250471562aca74f0c7102b56a73240889fa410 100644 (file)
@@ -1301,12 +1301,12 @@ static void ublk_cmd_list_tw_cb(struct io_uring_cmd *cmd,
 static void ublk_queue_cmd_list(struct ublk_queue *ubq, struct rq_list *l)
 {
        struct request *rq = rq_list_peek(l);
-       struct ublk_io *io = &ubq->ios[rq->tag];
-       struct ublk_uring_cmd_pdu *pdu = ublk_get_uring_cmd_pdu(io->cmd);
+       struct io_uring_cmd *cmd = ubq->ios[rq->tag].cmd;
+       struct ublk_uring_cmd_pdu *pdu = ublk_get_uring_cmd_pdu(cmd);
 
        pdu->req_list = rq;
        rq_list_init(l);
-       io_uring_cmd_complete_in_task(io->cmd, ublk_cmd_list_tw_cb);
+       io_uring_cmd_complete_in_task(cmd, ublk_cmd_list_tw_cb);
 }
 
 static enum blk_eh_timer_return ublk_timeout(struct request *rq)