@@ -250,8 +250,7 @@ static void ublk_io_release(void *priv);
250
250
static void ublk_stop_dev_unlocked (struct ublk_device * ub );
251
251
static void ublk_abort_queue (struct ublk_device * ub , struct ublk_queue * ubq );
252
252
static inline struct request * __ublk_check_and_get_req (struct ublk_device * ub ,
253
- const struct ublk_queue * ubq , struct ublk_io * io ,
254
- size_t offset );
253
+ u16 q_id , u16 tag , struct ublk_io * io , size_t offset );
255
254
static inline unsigned int ublk_req_build_flags (struct request * req );
256
255
257
256
static inline struct ublksrv_io_desc *
@@ -2126,7 +2125,7 @@ static void ublk_io_release(void *priv)
2126
2125
2127
2126
static int ublk_register_io_buf (struct io_uring_cmd * cmd ,
2128
2127
struct ublk_device * ub ,
2129
- const struct ublk_queue * ubq ,
2128
+ u16 q_id , u16 tag ,
2130
2129
struct ublk_io * io ,
2131
2130
unsigned int index , unsigned int issue_flags )
2132
2131
{
@@ -2136,7 +2135,7 @@ static int ublk_register_io_buf(struct io_uring_cmd *cmd,
2136
2135
if (!ublk_dev_support_zero_copy (ub ))
2137
2136
return - EINVAL ;
2138
2137
2139
- req = __ublk_check_and_get_req (ub , ubq , io , 0 );
2138
+ req = __ublk_check_and_get_req (ub , q_id , tag , io , 0 );
2140
2139
if (!req )
2141
2140
return - EINVAL ;
2142
2141
@@ -2153,7 +2152,7 @@ static int ublk_register_io_buf(struct io_uring_cmd *cmd,
2153
2152
static int
2154
2153
ublk_daemon_register_io_buf (struct io_uring_cmd * cmd ,
2155
2154
struct ublk_device * ub ,
2156
- const struct ublk_queue * ubq , struct ublk_io * io ,
2155
+ u16 q_id , u16 tag , struct ublk_io * io ,
2157
2156
unsigned index , unsigned issue_flags )
2158
2157
{
2159
2158
unsigned new_registered_buffers ;
@@ -2166,7 +2165,7 @@ ublk_daemon_register_io_buf(struct io_uring_cmd *cmd,
2166
2165
*/
2167
2166
new_registered_buffers = io -> task_registered_buffers + 1 ;
2168
2167
if (unlikely (new_registered_buffers >= UBLK_REFCOUNT_INIT ))
2169
- return ublk_register_io_buf (cmd , ub , ubq , io , index ,
2168
+ return ublk_register_io_buf (cmd , ub , q_id , tag , io , index ,
2170
2169
issue_flags );
2171
2170
2172
2171
if (!ublk_dev_support_zero_copy (ub ) || !ublk_rq_has_data (req ))
@@ -2358,8 +2357,8 @@ static int ublk_ch_uring_cmd_local(struct io_uring_cmd *cmd,
2358
2357
* so can be handled on any task
2359
2358
*/
2360
2359
if (_IOC_NR (cmd_op ) == UBLK_IO_REGISTER_IO_BUF )
2361
- return ublk_register_io_buf (cmd , ub , ubq , io , addr ,
2362
- issue_flags );
2360
+ return ublk_register_io_buf (cmd , ub , q_id , tag , io ,
2361
+ addr , issue_flags );
2363
2362
2364
2363
goto out ;
2365
2364
}
@@ -2380,7 +2379,7 @@ static int ublk_ch_uring_cmd_local(struct io_uring_cmd *cmd,
2380
2379
2381
2380
switch (_IOC_NR (cmd_op )) {
2382
2381
case UBLK_IO_REGISTER_IO_BUF :
2383
- return ublk_daemon_register_io_buf (cmd , ub , ubq , io , addr ,
2382
+ return ublk_daemon_register_io_buf (cmd , ub , q_id , tag , io , addr ,
2384
2383
issue_flags );
2385
2384
case UBLK_IO_COMMIT_AND_FETCH_REQ :
2386
2385
ret = ublk_check_commit_and_fetch (ubq , io , addr );
@@ -2429,16 +2428,15 @@ static int ublk_ch_uring_cmd_local(struct io_uring_cmd *cmd,
2429
2428
}
2430
2429
2431
2430
static inline struct request * __ublk_check_and_get_req (struct ublk_device * ub ,
2432
- const struct ublk_queue * ubq , struct ublk_io * io , size_t offset )
2431
+ u16 q_id , u16 tag , struct ublk_io * io , size_t offset )
2433
2432
{
2434
- unsigned tag = io - ubq -> ios ;
2435
2433
struct request * req ;
2436
2434
2437
2435
/*
2438
2436
* can't use io->req in case of concurrent UBLK_IO_COMMIT_AND_FETCH_REQ,
2439
2437
* which would overwrite it with io->cmd
2440
2438
*/
2441
- req = blk_mq_tag_to_rq (ub -> tag_set .tags [ubq -> q_id ], tag );
2439
+ req = blk_mq_tag_to_rq (ub -> tag_set .tags [q_id ], tag );
2442
2440
if (!req )
2443
2441
return NULL ;
2444
2442
@@ -2536,7 +2534,7 @@ static struct request *ublk_check_and_get_req(struct kiocb *iocb,
2536
2534
return ERR_PTR (- EINVAL );
2537
2535
2538
2536
* io = & ubq -> ios [tag ];
2539
- req = __ublk_check_and_get_req (ub , ubq , * io , buf_off );
2537
+ req = __ublk_check_and_get_req (ub , q_id , tag , * io , buf_off );
2540
2538
if (!req )
2541
2539
return ERR_PTR (- EINVAL );
2542
2540
0 commit comments