@@ -1317,7 +1317,7 @@ static __cold void io_fallback_tw(struct io_uring_task *tctx)
1317
1317
}
1318
1318
}
1319
1319
1320
- static void io_req_local_work_add (struct io_kiocb * req , unsigned flags )
1320
+ static inline void io_req_local_work_add (struct io_kiocb * req , unsigned flags )
1321
1321
{
1322
1322
struct io_ring_ctx * ctx = req -> ctx ;
1323
1323
unsigned nr_wait , nr_tw , nr_tw_prev ;
@@ -1368,19 +1368,11 @@ static void io_req_local_work_add(struct io_kiocb *req, unsigned flags)
1368
1368
wake_up_state (ctx -> submitter_task , TASK_INTERRUPTIBLE );
1369
1369
}
1370
1370
1371
- void __io_req_task_work_add (struct io_kiocb * req , unsigned flags )
1371
+ static void io_req_normal_work_add (struct io_kiocb * req )
1372
1372
{
1373
1373
struct io_uring_task * tctx = req -> task -> io_uring ;
1374
1374
struct io_ring_ctx * ctx = req -> ctx ;
1375
1375
1376
- if (!(flags & IOU_F_TWQ_FORCE_NORMAL ) &&
1377
- (ctx -> flags & IORING_SETUP_DEFER_TASKRUN )) {
1378
- rcu_read_lock ();
1379
- io_req_local_work_add (req , flags );
1380
- rcu_read_unlock ();
1381
- return ;
1382
- }
1383
-
1384
1376
/* task_work already pending, we're done */
1385
1377
if (!llist_add (& req -> io_task_work .node , & tctx -> task_list ))
1386
1378
return ;
@@ -1394,6 +1386,17 @@ void __io_req_task_work_add(struct io_kiocb *req, unsigned flags)
1394
1386
io_fallback_tw (tctx );
1395
1387
}
1396
1388
1389
+ void __io_req_task_work_add (struct io_kiocb * req , unsigned flags )
1390
+ {
1391
+ if (req -> ctx -> flags & IORING_SETUP_DEFER_TASKRUN ) {
1392
+ rcu_read_lock ();
1393
+ io_req_local_work_add (req , flags );
1394
+ rcu_read_unlock ();
1395
+ } else {
1396
+ io_req_normal_work_add (req );
1397
+ }
1398
+ }
1399
+
1397
1400
static void __cold io_move_task_work_from_local (struct io_ring_ctx * ctx )
1398
1401
{
1399
1402
struct llist_node * node ;
@@ -1404,7 +1407,7 @@ static void __cold io_move_task_work_from_local(struct io_ring_ctx *ctx)
1404
1407
io_task_work .node );
1405
1408
1406
1409
node = node -> next ;
1407
- __io_req_task_work_add (req , IOU_F_TWQ_FORCE_NORMAL );
1410
+ io_req_normal_work_add (req );
1408
1411
}
1409
1412
}
1410
1413
0 commit comments