Lines Matching defs:ki

33 static inline void cachefiles_put_kiocb(struct cachefiles_kiocb *ki)
35 if (refcount_dec_and_test(&ki->ki_refcnt)) {
36 cachefiles_put_object(ki->object, cachefiles_obj_put_ioreq);
37 fput(ki->iocb.ki_filp);
38 kfree(ki);
47 struct cachefiles_kiocb *ki = container_of(iocb, struct cachefiles_kiocb, iocb);
48 struct inode *inode = file_inode(ki->iocb.ki_filp);
53 trace_cachefiles_io_error(ki->object, inode, ret,
56 if (ki->term_func) {
58 if (ki->object->cookie->inval_counter == ki->inval_counter)
59 ki->skipped += ret;
64 ki->term_func(ki->term_func_priv, ret, ki->was_async);
67 cachefiles_put_kiocb(ki);
81 struct cachefiles_kiocb *ki;
133 ki = kzalloc(sizeof(struct cachefiles_kiocb), GFP_KERNEL);
134 if (!ki)
137 refcount_set(&ki->ki_refcnt, 2);
138 ki->iocb.ki_filp = file;
139 ki->iocb.ki_pos = start_pos + skipped;
140 ki->iocb.ki_flags = IOCB_DIRECT;
141 ki->iocb.ki_ioprio = get_current_ioprio();
142 ki->skipped = skipped;
143 ki->object = object;
144 ki->inval_counter = cres->inval_counter;
145 ki->term_func = term_func;
146 ki->term_func_priv = term_func_priv;
147 ki->was_async = true;
149 if (ki->term_func)
150 ki->iocb.ki_complete = cachefiles_read_complete;
152 get_file(ki->iocb.ki_filp);
155 trace_cachefiles_read(object, file_inode(file), ki->iocb.ki_pos, len - skipped);
159 ret = vfs_iocb_iter_read(file, &ki->iocb, iter);
175 ki->was_async = false;
176 cachefiles_read_complete(&ki->iocb, ret);
183 cachefiles_put_kiocb(ki);
256 struct cachefiles_kiocb *ki = container_of(iocb, struct cachefiles_kiocb, iocb);
257 struct cachefiles_object *object = ki->object;
258 struct inode *inode = file_inode(ki->iocb.ki_filp);
268 atomic_long_sub(ki->b_writing, &object->volume->cache->b_writing);
270 if (ki->term_func)
271 ki->term_func(ki->term_func_priv, ret, ki->was_async);
272 cachefiles_put_kiocb(ki);
286 struct cachefiles_kiocb *ki;
298 ki = kzalloc(sizeof(struct cachefiles_kiocb), GFP_KERNEL);
299 if (!ki) {
305 refcount_set(&ki->ki_refcnt, 2);
306 ki->iocb.ki_filp = file;
307 ki->iocb.ki_pos = start_pos;
308 ki->iocb.ki_flags = IOCB_DIRECT | IOCB_WRITE;
309 ki->iocb.ki_ioprio = get_current_ioprio();
310 ki->object = object;
311 ki->start = start_pos;
312 ki->len = len;
313 ki->term_func = term_func;
314 ki->term_func_priv = term_func_priv;
315 ki->was_async = true;
316 ki->b_writing = (len + (1 << cache->bshift) - 1) >> cache->bshift;
318 if (ki->term_func)
319 ki->iocb.ki_complete = cachefiles_write_complete;
320 atomic_long_add(ki->b_writing, &cache->b_writing);
322 kiocb_start_write(&ki->iocb);
324 get_file(ki->iocb.ki_filp);
327 trace_cachefiles_write(object, file_inode(file), ki->iocb.ki_pos, len);
331 ret = vfs_iocb_iter_write(file, &ki->iocb, iter);
347 ki->was_async = false;
348 cachefiles_write_complete(&ki->iocb, ret);
355 cachefiles_put_kiocb(ki);