@@ -236,14 +236,6 @@ static void kiocb_end_write(struct io_kiocb *req)
236
236
237
237
static bool __io_complete_rw_common (struct io_kiocb * req , long res )
238
238
{
239
- struct io_rw * rw = io_kiocb_to_cmd (req , struct io_rw );
240
-
241
- if (rw -> kiocb .ki_flags & IOCB_WRITE ) {
242
- kiocb_end_write (req );
243
- fsnotify_modify (req -> file );
244
- } else {
245
- fsnotify_access (req -> file );
246
- }
247
239
if (unlikely (res != req -> cqe .res )) {
248
240
if ((res == - EAGAIN || res == - EOPNOTSUPP ) &&
249
241
io_rw_should_reissue (req )) {
@@ -270,6 +262,20 @@ static inline int io_fixup_rw_res(struct io_kiocb *req, long res)
270
262
return res ;
271
263
}
272
264
265
+ static void io_req_rw_complete (struct io_kiocb * req , bool * locked )
266
+ {
267
+ struct io_rw * rw = io_kiocb_to_cmd (req , struct io_rw );
268
+
269
+ if (rw -> kiocb .ki_flags & IOCB_WRITE ) {
270
+ kiocb_end_write (req );
271
+ fsnotify_modify (req -> file );
272
+ } else {
273
+ fsnotify_access (req -> file );
274
+ }
275
+
276
+ io_req_task_complete (req , locked );
277
+ }
278
+
273
279
static void io_complete_rw (struct kiocb * kiocb , long res )
274
280
{
275
281
struct io_rw * rw = container_of (kiocb , struct io_rw , kiocb );
@@ -278,7 +284,7 @@ static void io_complete_rw(struct kiocb *kiocb, long res)
278
284
if (__io_complete_rw_common (req , res ))
279
285
return ;
280
286
io_req_set_res (req , io_fixup_rw_res (req , res ), 0 );
281
- req -> io_task_work .func = io_req_task_complete ;
287
+ req -> io_task_work .func = io_req_rw_complete ;
282
288
io_req_task_work_add (req );
283
289
}
284
290
0 commit comments