diff options
| author | Caleb Sander Mateos <csander@purestorage.com> | 2025-09-17 19:49:43 -0600 |
|---|---|---|
| committer | Jens Axboe <axboe@kernel.dk> | 2025-09-20 06:36:27 -0600 |
| commit | 8a81926e45670c6d9b6e73e0482485d5c9a627e6 (patch) | |
| tree | 4cb81362b56dfbad20245119ff64f0368b079efc | |
| parent | b40dcdf8235d536072b9f61eb6d291f0f3720768 (diff) | |
ublk: pass ublk_device to ublk_register_io_buf()
Avoid repeating the 2 dereferences to get the ublk_device from the
io_uring_cmd by passing it from ublk_ch_uring_cmd_local() to
ublk_register_io_buf().
Signed-off-by: Caleb Sander Mateos <csander@purestorage.com>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
| -rw-r--r-- | drivers/block/ublk_drv.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index d6d8dcb72e4b..cb51f3f3cd33 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -2125,11 +2125,11 @@ static void ublk_io_release(void *priv) } static int ublk_register_io_buf(struct io_uring_cmd *cmd, + struct ublk_device *ub, const struct ublk_queue *ubq, struct ublk_io *io, unsigned int index, unsigned int issue_flags) { - struct ublk_device *ub = cmd->file->private_data; struct request *req; int ret; @@ -2152,6 +2152,7 @@ static int ublk_register_io_buf(struct io_uring_cmd *cmd, static int ublk_daemon_register_io_buf(struct io_uring_cmd *cmd, + struct ublk_device *ub, const struct ublk_queue *ubq, struct ublk_io *io, unsigned index, unsigned issue_flags) { @@ -2165,7 +2166,8 @@ ublk_daemon_register_io_buf(struct io_uring_cmd *cmd, */ new_registered_buffers = io->task_registered_buffers + 1; if (unlikely(new_registered_buffers >= UBLK_REFCOUNT_INIT)) - return ublk_register_io_buf(cmd, ubq, io, index, issue_flags); + return ublk_register_io_buf(cmd, ub, ubq, io, index, + issue_flags); if (!ublk_support_zero_copy(ubq) || !ublk_rq_has_data(req)) return -EINVAL; @@ -2356,7 +2358,7 @@ static int ublk_ch_uring_cmd_local(struct io_uring_cmd *cmd, * so can be handled on any task */ if (_IOC_NR(cmd_op) == UBLK_IO_REGISTER_IO_BUF) - return ublk_register_io_buf(cmd, ubq, io, addr, + return ublk_register_io_buf(cmd, ub, ubq, io, addr, issue_flags); goto out; @@ -2378,7 +2380,7 @@ static int ublk_ch_uring_cmd_local(struct io_uring_cmd *cmd, switch (_IOC_NR(cmd_op)) { case UBLK_IO_REGISTER_IO_BUF: - return ublk_daemon_register_io_buf(cmd, ubq, io, addr, + return ublk_daemon_register_io_buf(cmd, ub, ubq, io, addr, issue_flags); case UBLK_IO_COMMIT_AND_FETCH_REQ: ret = ublk_check_commit_and_fetch(ubq, io, addr); |
