Lines Matching refs:aio_req

247 static inline void ovl_aio_put(struct ovl_aio_req *aio_req)  in ovl_aio_put()  argument
249 if (refcount_dec_and_test(&aio_req->ref)) { in ovl_aio_put()
250 fdput(aio_req->fd); in ovl_aio_put()
251 kmem_cache_free(ovl_aio_request_cachep, aio_req); in ovl_aio_put()
255 static void ovl_aio_cleanup_handler(struct ovl_aio_req *aio_req) in ovl_aio_cleanup_handler() argument
257 struct kiocb *iocb = &aio_req->iocb; in ovl_aio_cleanup_handler()
258 struct kiocb *orig_iocb = aio_req->orig_iocb; in ovl_aio_cleanup_handler()
271 ovl_aio_put(aio_req); in ovl_aio_cleanup_handler()
276 struct ovl_aio_req *aio_req = container_of(iocb, in ovl_aio_rw_complete() local
278 struct kiocb *orig_iocb = aio_req->orig_iocb; in ovl_aio_rw_complete()
280 ovl_aio_cleanup_handler(aio_req); in ovl_aio_rw_complete()
310 struct ovl_aio_req *aio_req; in ovl_read_iter() local
313 aio_req = kmem_cache_zalloc(ovl_aio_request_cachep, GFP_KERNEL); in ovl_read_iter()
314 if (!aio_req) in ovl_read_iter()
317 aio_req->fd = real; in ovl_read_iter()
319 aio_req->orig_iocb = iocb; in ovl_read_iter()
320 kiocb_clone(&aio_req->iocb, iocb, real.file); in ovl_read_iter()
321 aio_req->iocb.ki_complete = ovl_aio_rw_complete; in ovl_read_iter()
322 refcount_set(&aio_req->ref, 2); in ovl_read_iter()
323 ret = vfs_iocb_iter_read(real.file, &aio_req->iocb, iter); in ovl_read_iter()
324 ovl_aio_put(aio_req); in ovl_read_iter()
326 ovl_aio_cleanup_handler(aio_req); in ovl_read_iter()
379 struct ovl_aio_req *aio_req; in ovl_write_iter() local
382 aio_req = kmem_cache_zalloc(ovl_aio_request_cachep, GFP_KERNEL); in ovl_write_iter()
383 if (!aio_req) in ovl_write_iter()
390 aio_req->fd = real; in ovl_write_iter()
392 aio_req->orig_iocb = iocb; in ovl_write_iter()
393 kiocb_clone(&aio_req->iocb, iocb, real.file); in ovl_write_iter()
394 aio_req->iocb.ki_flags = ifl; in ovl_write_iter()
395 aio_req->iocb.ki_complete = ovl_aio_rw_complete; in ovl_write_iter()
396 refcount_set(&aio_req->ref, 2); in ovl_write_iter()
397 ret = vfs_iocb_iter_write(real.file, &aio_req->iocb, iter); in ovl_write_iter()
398 ovl_aio_put(aio_req); in ovl_write_iter()
400 ovl_aio_cleanup_handler(aio_req); in ovl_write_iter()