Lines Matching defs:aio

59 	/* used for aio completion */
75 static void backing_aio_put(struct backing_aio *aio)
77 if (refcount_dec_and_test(&aio->ref)) {
78 fput(aio->iocb.ki_filp);
79 kmem_cache_free(backing_aio_cachep, aio);
83 static void backing_aio_cleanup(struct backing_aio *aio, long res)
85 struct kiocb *iocb = &aio->iocb;
86 struct kiocb *orig_iocb = aio->orig_iocb;
88 if (aio->end_write)
89 aio->end_write(orig_iocb->ki_filp);
92 backing_aio_put(aio);
97 struct backing_aio *aio = container_of(iocb, struct backing_aio, iocb);
98 struct kiocb *orig_iocb = aio->orig_iocb;
103 backing_aio_cleanup(aio, res);
109 struct backing_aio *aio = container_of(work, struct backing_aio, work);
111 backing_aio_rw_complete(&aio->iocb, aio->res);
116 struct backing_aio *aio = container_of(iocb, struct backing_aio, iocb);
121 aio->res = res;
122 INIT_WORK(&aio->work, backing_aio_complete_work);
123 queue_work(file_inode(aio->orig_iocb->ki_filp)->i_sb->s_dio_done_wq,
124 &aio->work);
142 struct backing_aio *aio = NULL;
163 aio = kmem_cache_zalloc(backing_aio_cachep, GFP_KERNEL);
164 if (!aio)
167 aio->orig_iocb = iocb;
168 kiocb_clone(&aio->iocb, iocb, get_file(file));
169 aio->iocb.ki_complete = backing_aio_rw_complete;
170 refcount_set(&aio->ref, 2);
171 ret = vfs_iocb_iter_read(file, &aio->iocb, iter);
172 backing_aio_put(aio);
174 backing_aio_cleanup(aio, ret);
221 struct backing_aio *aio;
228 aio = kmem_cache_zalloc(backing_aio_cachep, GFP_KERNEL);
229 if (!aio)
232 aio->orig_iocb = iocb;
233 aio->end_write = ctx->end_write;
234 kiocb_clone(&aio->iocb, iocb, get_file(file));
235 aio->iocb.ki_flags = flags;
236 aio->iocb.ki_complete = backing_aio_queue_completion;
237 refcount_set(&aio->ref, 2);
238 ret = vfs_iocb_iter_write(file, &aio->iocb, iter);
239 backing_aio_put(aio);
241 backing_aio_cleanup(aio, ret);