Skip to content

Commit 843c6ce

Browse files
calebsanderaxboe
authored andcommitted
ublk: pass ublksrv_ctrl_cmd * instead of io_uring_cmd *
The ublk_ctrl_*() handlers all take struct io_uring_cmd *cmd but only use it to get struct ublksrv_ctrl_cmd *header from the io_uring SQE. Since the caller ublk_ctrl_uring_cmd() has already computed header, pass it instead of cmd. Signed-off-by: Caleb Sander Mateos <csander@purestorage.com> Link: https://lore.kernel.org/r/20250409012928.3527198-1-csander@purestorage.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
1 parent 18461f2 commit 843c6ce

File tree

1 file changed

+19
-27
lines changed

1 file changed

+19
-27
lines changed

drivers/block/ublk_drv.c

Lines changed: 19 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2436,9 +2436,9 @@ static struct ublk_device *ublk_get_device_from_id(int idx)
24362436
return ub;
24372437
}
24382438

2439-
static int ublk_ctrl_start_dev(struct ublk_device *ub, struct io_uring_cmd *cmd)
2439+
static int ublk_ctrl_start_dev(struct ublk_device *ub,
2440+
const struct ublksrv_ctrl_cmd *header)
24402441
{
2441-
const struct ublksrv_ctrl_cmd *header = io_uring_sqe_cmd(cmd->sqe);
24422442
const struct ublk_param_basic *p = &ub->params.basic;
24432443
int ublksrv_pid = (int)header->data[0];
24442444
struct queue_limits lim = {
@@ -2557,9 +2557,8 @@ static int ublk_ctrl_start_dev(struct ublk_device *ub, struct io_uring_cmd *cmd)
25572557
}
25582558

25592559
static int ublk_ctrl_get_queue_affinity(struct ublk_device *ub,
2560-
struct io_uring_cmd *cmd)
2560+
const struct ublksrv_ctrl_cmd *header)
25612561
{
2562-
const struct ublksrv_ctrl_cmd *header = io_uring_sqe_cmd(cmd->sqe);
25632562
void __user *argp = (void __user *)(unsigned long)header->addr;
25642563
cpumask_var_t cpumask;
25652564
unsigned long queue;
@@ -2608,9 +2607,8 @@ static inline void ublk_dump_dev_info(struct ublksrv_ctrl_dev_info *info)
26082607
info->nr_hw_queues, info->queue_depth);
26092608
}
26102609

2611-
static int ublk_ctrl_add_dev(struct io_uring_cmd *cmd)
2610+
static int ublk_ctrl_add_dev(const struct ublksrv_ctrl_cmd *header)
26122611
{
2613-
const struct ublksrv_ctrl_cmd *header = io_uring_sqe_cmd(cmd->sqe);
26142612
void __user *argp = (void __user *)(unsigned long)header->addr;
26152613
struct ublksrv_ctrl_dev_info info;
26162614
struct ublk_device *ub;
@@ -2835,9 +2833,8 @@ static int ublk_ctrl_stop_dev(struct ublk_device *ub)
28352833
}
28362834

28372835
static int ublk_ctrl_get_dev_info(struct ublk_device *ub,
2838-
struct io_uring_cmd *cmd)
2836+
const struct ublksrv_ctrl_cmd *header)
28392837
{
2840-
const struct ublksrv_ctrl_cmd *header = io_uring_sqe_cmd(cmd->sqe);
28412838
void __user *argp = (void __user *)(unsigned long)header->addr;
28422839

28432840
if (header->len < sizeof(struct ublksrv_ctrl_dev_info) || !header->addr)
@@ -2866,9 +2863,8 @@ static void ublk_ctrl_fill_params_devt(struct ublk_device *ub)
28662863
}
28672864

28682865
static int ublk_ctrl_get_params(struct ublk_device *ub,
2869-
struct io_uring_cmd *cmd)
2866+
const struct ublksrv_ctrl_cmd *header)
28702867
{
2871-
const struct ublksrv_ctrl_cmd *header = io_uring_sqe_cmd(cmd->sqe);
28722868
void __user *argp = (void __user *)(unsigned long)header->addr;
28732869
struct ublk_params_header ph;
28742870
int ret;
@@ -2897,9 +2893,8 @@ static int ublk_ctrl_get_params(struct ublk_device *ub,
28972893
}
28982894

28992895
static int ublk_ctrl_set_params(struct ublk_device *ub,
2900-
struct io_uring_cmd *cmd)
2896+
const struct ublksrv_ctrl_cmd *header)
29012897
{
2902-
const struct ublksrv_ctrl_cmd *header = io_uring_sqe_cmd(cmd->sqe);
29032898
void __user *argp = (void __user *)(unsigned long)header->addr;
29042899
struct ublk_params_header ph;
29052900
int ret = -EFAULT;
@@ -2963,9 +2958,8 @@ static void ublk_queue_reinit(struct ublk_device *ub, struct ublk_queue *ubq)
29632958
}
29642959

29652960
static int ublk_ctrl_start_recovery(struct ublk_device *ub,
2966-
struct io_uring_cmd *cmd)
2961+
const struct ublksrv_ctrl_cmd *header)
29672962
{
2968-
const struct ublksrv_ctrl_cmd *header = io_uring_sqe_cmd(cmd->sqe);
29692963
int ret = -EINVAL;
29702964
int i;
29712965

@@ -3011,9 +3005,8 @@ static int ublk_ctrl_start_recovery(struct ublk_device *ub,
30113005
}
30123006

30133007
static int ublk_ctrl_end_recovery(struct ublk_device *ub,
3014-
struct io_uring_cmd *cmd)
3008+
const struct ublksrv_ctrl_cmd *header)
30153009
{
3016-
const struct ublksrv_ctrl_cmd *header = io_uring_sqe_cmd(cmd->sqe);
30173010
int ublksrv_pid = (int)header->data[0];
30183011
int ret = -EINVAL;
30193012
int i;
@@ -3060,9 +3053,8 @@ static int ublk_ctrl_end_recovery(struct ublk_device *ub,
30603053
return ret;
30613054
}
30623055

3063-
static int ublk_ctrl_get_features(struct io_uring_cmd *cmd)
3056+
static int ublk_ctrl_get_features(const struct ublksrv_ctrl_cmd *header)
30643057
{
3065-
const struct ublksrv_ctrl_cmd *header = io_uring_sqe_cmd(cmd->sqe);
30663058
void __user *argp = (void __user *)(unsigned long)header->addr;
30673059
u64 features = UBLK_F_ALL;
30683060

@@ -3201,7 +3193,7 @@ static int ublk_ctrl_uring_cmd(struct io_uring_cmd *cmd,
32013193
goto out;
32023194

32033195
if (cmd_op == UBLK_U_CMD_GET_FEATURES) {
3204-
ret = ublk_ctrl_get_features(cmd);
3196+
ret = ublk_ctrl_get_features(header);
32053197
goto out;
32063198
}
32073199

@@ -3218,17 +3210,17 @@ static int ublk_ctrl_uring_cmd(struct io_uring_cmd *cmd,
32183210

32193211
switch (_IOC_NR(cmd_op)) {
32203212
case UBLK_CMD_START_DEV:
3221-
ret = ublk_ctrl_start_dev(ub, cmd);
3213+
ret = ublk_ctrl_start_dev(ub, header);
32223214
break;
32233215
case UBLK_CMD_STOP_DEV:
32243216
ret = ublk_ctrl_stop_dev(ub);
32253217
break;
32263218
case UBLK_CMD_GET_DEV_INFO:
32273219
case UBLK_CMD_GET_DEV_INFO2:
3228-
ret = ublk_ctrl_get_dev_info(ub, cmd);
3220+
ret = ublk_ctrl_get_dev_info(ub, header);
32293221
break;
32303222
case UBLK_CMD_ADD_DEV:
3231-
ret = ublk_ctrl_add_dev(cmd);
3223+
ret = ublk_ctrl_add_dev(header);
32323224
break;
32333225
case UBLK_CMD_DEL_DEV:
32343226
ret = ublk_ctrl_del_dev(&ub, true);
@@ -3237,19 +3229,19 @@ static int ublk_ctrl_uring_cmd(struct io_uring_cmd *cmd,
32373229
ret = ublk_ctrl_del_dev(&ub, false);
32383230
break;
32393231
case UBLK_CMD_GET_QUEUE_AFFINITY:
3240-
ret = ublk_ctrl_get_queue_affinity(ub, cmd);
3232+
ret = ublk_ctrl_get_queue_affinity(ub, header);
32413233
break;
32423234
case UBLK_CMD_GET_PARAMS:
3243-
ret = ublk_ctrl_get_params(ub, cmd);
3235+
ret = ublk_ctrl_get_params(ub, header);
32443236
break;
32453237
case UBLK_CMD_SET_PARAMS:
3246-
ret = ublk_ctrl_set_params(ub, cmd);
3238+
ret = ublk_ctrl_set_params(ub, header);
32473239
break;
32483240
case UBLK_CMD_START_USER_RECOVERY:
3249-
ret = ublk_ctrl_start_recovery(ub, cmd);
3241+
ret = ublk_ctrl_start_recovery(ub, header);
32503242
break;
32513243
case UBLK_CMD_END_USER_RECOVERY:
3252-
ret = ublk_ctrl_end_recovery(ub, cmd);
3244+
ret = ublk_ctrl_end_recovery(ub, header);
32533245
break;
32543246
default:
32553247
ret = -EOPNOTSUPP;

0 commit comments

Comments
 (0)