Lines Matching refs:aio_req

279 static inline void ovl_aio_put(struct ovl_aio_req *aio_req)  in ovl_aio_put()  argument
281 if (refcount_dec_and_test(&aio_req->ref)) { in ovl_aio_put()
282 fput(aio_req->iocb.ki_filp); in ovl_aio_put()
283 kmem_cache_free(ovl_aio_request_cachep, aio_req); in ovl_aio_put()
287 static void ovl_aio_cleanup_handler(struct ovl_aio_req *aio_req) in ovl_aio_cleanup_handler() argument
289 struct kiocb *iocb = &aio_req->iocb; in ovl_aio_cleanup_handler()
290 struct kiocb *orig_iocb = aio_req->orig_iocb; in ovl_aio_cleanup_handler()
300 ovl_aio_put(aio_req); in ovl_aio_cleanup_handler()
305 struct ovl_aio_req *aio_req = container_of(iocb, in ovl_aio_rw_complete() local
307 struct kiocb *orig_iocb = aio_req->orig_iocb; in ovl_aio_rw_complete()
309 ovl_aio_cleanup_handler(aio_req); in ovl_aio_rw_complete()
337 struct ovl_aio_req *aio_req; in ovl_read_iter() local
340 aio_req = kmem_cache_zalloc(ovl_aio_request_cachep, GFP_KERNEL); in ovl_read_iter()
341 if (!aio_req) in ovl_read_iter()
344 aio_req->orig_iocb = iocb; in ovl_read_iter()
345 kiocb_clone(&aio_req->iocb, iocb, get_file(real.file)); in ovl_read_iter()
346 aio_req->iocb.ki_complete = ovl_aio_rw_complete; in ovl_read_iter()
347 refcount_set(&aio_req->ref, 2); in ovl_read_iter()
348 ret = vfs_iocb_iter_read(real.file, &aio_req->iocb, iter); in ovl_read_iter()
349 ovl_aio_put(aio_req); in ovl_read_iter()
351 ovl_aio_cleanup_handler(aio_req); in ovl_read_iter()
408 struct ovl_aio_req *aio_req; in ovl_write_iter() local
411 aio_req = kmem_cache_zalloc(ovl_aio_request_cachep, GFP_KERNEL); in ovl_write_iter()
412 if (!aio_req) in ovl_write_iter()
415 aio_req->orig_iocb = iocb; in ovl_write_iter()
416 kiocb_clone(&aio_req->iocb, iocb, get_file(real.file)); in ovl_write_iter()
417 aio_req->iocb.ki_flags = ifl; in ovl_write_iter()
418 aio_req->iocb.ki_complete = ovl_aio_rw_complete; in ovl_write_iter()
419 refcount_set(&aio_req->ref, 2); in ovl_write_iter()
420 kiocb_start_write(&aio_req->iocb); in ovl_write_iter()
421 ret = vfs_iocb_iter_write(real.file, &aio_req->iocb, iter); in ovl_write_iter()
422 ovl_aio_put(aio_req); in ovl_write_iter()
424 ovl_aio_cleanup_handler(aio_req); in ovl_write_iter()