Lines Matching refs:ff

64 	struct fuse_file *ff;  in fuse_file_alloc()  local
66 ff = kzalloc(sizeof(struct fuse_file), GFP_KERNEL_ACCOUNT); in fuse_file_alloc()
67 if (unlikely(!ff)) in fuse_file_alloc()
70 ff->fc = fc; in fuse_file_alloc()
71 ff->release_args = kzalloc(sizeof(*ff->release_args), in fuse_file_alloc()
73 if (!ff->release_args) { in fuse_file_alloc()
74 kfree(ff); in fuse_file_alloc()
78 INIT_LIST_HEAD(&ff->write_entry); in fuse_file_alloc()
79 mutex_init(&ff->readdir.lock); in fuse_file_alloc()
80 refcount_set(&ff->count, 1); in fuse_file_alloc()
81 RB_CLEAR_NODE(&ff->polled_node); in fuse_file_alloc()
82 init_waitqueue_head(&ff->poll_wait); in fuse_file_alloc()
84 ff->kh = atomic64_inc_return(&fc->khctr); in fuse_file_alloc()
86 return ff; in fuse_file_alloc()
89 void fuse_file_free(struct fuse_file *ff) in fuse_file_free() argument
91 kfree(ff->release_args); in fuse_file_free()
92 mutex_destroy(&ff->readdir.lock); in fuse_file_free()
93 kfree(ff); in fuse_file_free()
96 static struct fuse_file *fuse_file_get(struct fuse_file *ff) in fuse_file_get() argument
98 refcount_inc(&ff->count); in fuse_file_get()
99 return ff; in fuse_file_get()
111 static void fuse_file_put(struct fuse_file *ff, bool sync, bool isdir) in fuse_file_put() argument
113 if (refcount_dec_and_test(&ff->count)) { in fuse_file_put()
114 struct fuse_args *args = &ff->release_args->args; in fuse_file_put()
116 if (isdir ? ff->fc->no_opendir : ff->fc->no_open) { in fuse_file_put()
118 fuse_release_end(ff->fc, args, 0); in fuse_file_put()
120 fuse_simple_request(ff->fc, args); in fuse_file_put()
121 fuse_release_end(ff->fc, args, 0); in fuse_file_put()
124 if (fuse_simple_background(ff->fc, args, in fuse_file_put()
126 fuse_release_end(ff->fc, args, -ENOTCONN); in fuse_file_put()
128 kfree(ff); in fuse_file_put()
135 struct fuse_file *ff; in fuse_do_open() local
138 ff = fuse_file_alloc(fc); in fuse_do_open()
139 if (!ff) in fuse_do_open()
142 ff->fh = 0; in fuse_do_open()
144 ff->open_flags = FOPEN_KEEP_CACHE | (isdir ? FOPEN_CACHE_DIR : 0); in fuse_do_open()
151 ff->fh = outarg.fh; in fuse_do_open()
152 ff->open_flags = outarg.open_flags; in fuse_do_open()
155 fuse_file_free(ff); in fuse_do_open()
166 ff->open_flags &= ~FOPEN_DIRECT_IO; in fuse_do_open()
168 ff->nodeid = nodeid; in fuse_do_open()
169 file->private_data = ff; in fuse_do_open()
179 struct fuse_file *ff = file->private_data; in fuse_link_write_file() local
185 if (list_empty(&ff->write_entry)) in fuse_link_write_file()
186 list_add(&ff->write_entry, &fi->write_files); in fuse_link_write_file()
192 struct fuse_file *ff = file->private_data; in fuse_finish_open() local
195 if (!(ff->open_flags & FOPEN_KEEP_CACHE)) in fuse_finish_open()
197 if (ff->open_flags & FOPEN_STREAM) in fuse_finish_open()
199 else if (ff->open_flags & FOPEN_NONSEEKABLE) in fuse_finish_open()
246 static void fuse_prepare_release(struct fuse_inode *fi, struct fuse_file *ff, in fuse_prepare_release() argument
249 struct fuse_conn *fc = ff->fc; in fuse_prepare_release()
250 struct fuse_release_args *ra = ff->release_args; in fuse_prepare_release()
255 list_del(&ff->write_entry); in fuse_prepare_release()
259 if (!RB_EMPTY_NODE(&ff->polled_node)) in fuse_prepare_release()
260 rb_erase(&ff->polled_node, &fc->polled_files); in fuse_prepare_release()
263 wake_up_interruptible_all(&ff->poll_wait); in fuse_prepare_release()
265 ra->inarg.fh = ff->fh; in fuse_prepare_release()
271 ra->args.nodeid = ff->nodeid; in fuse_prepare_release()
279 struct fuse_file *ff = file->private_data; in fuse_release_common() local
280 struct fuse_release_args *ra = ff->release_args; in fuse_release_common()
283 fuse_prepare_release(fi, ff, file->f_flags, opcode); in fuse_release_common()
285 if (ff->flock) { in fuse_release_common()
287 ra->inarg.lock_owner = fuse_lock_owner_id(ff->fc, in fuse_release_common()
302 fuse_file_put(ff, ff->fc->destroy, isdir); in fuse_release_common()
324 void fuse_sync_release(struct fuse_inode *fi, struct fuse_file *ff, int flags) in fuse_sync_release() argument
326 WARN_ON(refcount_read(&ff->count) > 1); in fuse_sync_release()
327 fuse_prepare_release(fi, ff, flags, FUSE_RELEASE); in fuse_sync_release()
332 fuse_file_put(ff, true, false); in fuse_sync_release()
440 struct fuse_file *ff = file->private_data; in fuse_flush() local
464 inarg.fh = ff->fh; in fuse_flush()
486 struct fuse_file *ff = file->private_data; in fuse_fsync_common() local
491 inarg.fh = ff->fh; in fuse_fsync_common()
554 struct fuse_file *ff = file->private_data; in fuse_read_args_fill() local
557 ia->read.in.fh = ff->fh; in fuse_read_args_fill()
562 args->nodeid = ff->nodeid; in fuse_read_args_fill()
724 struct fuse_file *ff = file->private_data; in fuse_send_read() local
725 struct fuse_conn *fc = ff->fc; in fuse_send_read()
870 if (ia->ff) in fuse_readpages_end()
871 fuse_file_put(ia->ff, false, false); in fuse_readpages_end()
878 struct fuse_file *ff = file->private_data; in fuse_send_readpages() local
879 struct fuse_conn *fc = ff->fc; in fuse_send_readpages()
891 ia->ff = fuse_file_get(ff); in fuse_send_readpages()
1003 static void fuse_write_args_fill(struct fuse_io_args *ia, struct fuse_file *ff, in fuse_write_args_fill() argument
1008 ia->write.in.fh = ff->fh; in fuse_write_args_fill()
1012 args->nodeid = ff->nodeid; in fuse_write_args_fill()
1014 if (ff->fc->minor < 9) in fuse_write_args_fill()
1042 struct fuse_file *ff = file->private_data; in fuse_send_write() local
1043 struct fuse_conn *fc = ff->fc; in fuse_send_write()
1047 fuse_write_args_fill(ia, ff, pos, count); in fuse_send_write()
1087 struct fuse_file *ff = file->private_data; in fuse_send_write_pages() local
1088 struct fuse_conn *fc = ff->fc; in fuse_send_write_pages()
1095 fuse_write_args_fill(ia, ff, pos, count); in fuse_send_write_pages()
1410 struct fuse_file *ff = file->private_data; in fuse_direct_io() local
1411 struct fuse_conn *fc = ff->fc; in fuse_direct_io()
1547 struct fuse_file *ff = file->private_data; in fuse_file_read_iter() local
1552 if (!(ff->open_flags & FOPEN_DIRECT_IO)) in fuse_file_read_iter()
1561 struct fuse_file *ff = file->private_data; in fuse_file_write_iter() local
1566 if (!(ff->open_flags & FOPEN_DIRECT_IO)) in fuse_file_write_iter()
1580 if (wpa->ia.ff) in fuse_writepage_free()
1581 fuse_file_put(wpa->ia.ff, false, false); in fuse_writepage_free()
1701 next->ia.ff = fuse_file_get(wpa->ia.ff); in fuse_writepage_end()
1738 struct fuse_file *ff = NULL; in __fuse_write_file_get() local
1742 ff = list_entry(fi->write_files.next, struct fuse_file, in __fuse_write_file_get()
1744 fuse_file_get(ff); in __fuse_write_file_get()
1748 return ff; in __fuse_write_file_get()
1754 struct fuse_file *ff = __fuse_write_file_get(fc, fi); in fuse_write_file_get() local
1755 WARN_ON(!ff); in fuse_write_file_get()
1756 return ff; in fuse_write_file_get()
1763 struct fuse_file *ff; in fuse_write_inode() local
1766 ff = __fuse_write_file_get(fc, fi); in fuse_write_inode()
1767 err = fuse_flush_times(inode, ff); in fuse_write_inode()
1768 if (ff) in fuse_write_inode()
1769 fuse_file_put(ff, false, false); in fuse_write_inode()
1816 wpa->ia.ff = fuse_write_file_get(fc, fi); in fuse_writepage_locked()
1817 if (!wpa->ia.ff) in fuse_writepage_locked()
1820 fuse_write_args_fill(&wpa->ia, wpa->ia.ff, page_offset(page), 0); in fuse_writepage_locked()
1881 struct fuse_file *ff; member
1921 wpa->ia.ff = fuse_file_get(data->ff); in fuse_writepages_send()
2002 if (!data->ff) { in fuse_writepages_fill()
2004 data->ff = fuse_write_file_get(fc, fi); in fuse_writepages_fill()
2005 if (!data->ff) in fuse_writepages_fill()
2058 fuse_write_args_fill(&wpa->ia, data->ff, page_offset(page), 0); in fuse_writepages_fill()
2118 data.ff = NULL; in fuse_writepages()
2134 if (data.ff) in fuse_writepages()
2135 fuse_file_put(data.ff, false, false); in fuse_writepages()
2280 struct fuse_file *ff = file->private_data; in fuse_file_mmap() local
2282 if (ff->open_flags & FOPEN_DIRECT_IO) { in fuse_file_mmap()
2339 struct fuse_file *ff = file->private_data; in fuse_lk_fill() local
2342 inarg->fh = ff->fh; in fuse_lk_fill()
2439 struct fuse_file *ff = file->private_data; in fuse_file_flock() local
2442 ff->flock = true; in fuse_file_flock()
2483 struct fuse_file *ff = file->private_data; in fuse_lseek() local
2486 .fh = ff->fh, in fuse_lseek()
2497 args.nodeid = ff->nodeid; in fuse_lseek()
2692 struct fuse_file *ff = file->private_data; in fuse_do_ioctl() local
2693 struct fuse_conn *fc = ff->fc; in fuse_do_ioctl()
2695 .fh = ff->fh, in fuse_do_ioctl()
2779 ap.args.nodeid = ff->nodeid; in fuse_do_ioctl()
2914 struct fuse_file *ff; in fuse_find_polled_node() local
2917 ff = rb_entry(last, struct fuse_file, polled_node); in fuse_find_polled_node()
2919 if (kh < ff->kh) in fuse_find_polled_node()
2921 else if (kh > ff->kh) in fuse_find_polled_node()
2939 struct fuse_file *ff) in fuse_register_polled_file() argument
2942 if (RB_EMPTY_NODE(&ff->polled_node)) { in fuse_register_polled_file()
2945 link = fuse_find_polled_node(fc, ff->kh, &parent); in fuse_register_polled_file()
2947 rb_link_node(&ff->polled_node, parent, link); in fuse_register_polled_file()
2948 rb_insert_color(&ff->polled_node, &fc->polled_files); in fuse_register_polled_file()
2955 struct fuse_file *ff = file->private_data; in fuse_file_poll() local
2956 struct fuse_conn *fc = ff->fc; in fuse_file_poll()
2957 struct fuse_poll_in inarg = { .fh = ff->fh, .kh = ff->kh }; in fuse_file_poll()
2965 poll_wait(file, &ff->poll_wait, wait); in fuse_file_poll()
2972 if (waitqueue_active(&ff->poll_wait)) { in fuse_file_poll()
2974 fuse_register_polled_file(fc, ff); in fuse_file_poll()
2978 args.nodeid = ff->nodeid; in fuse_file_poll()
3011 struct fuse_file *ff; in fuse_notify_poll_wakeup() local
3013 ff = rb_entry(*link, struct fuse_file, polled_node); in fuse_notify_poll_wakeup()
3014 wake_up_interruptible_sync(&ff->poll_wait); in fuse_notify_poll_wakeup()
3046 struct fuse_file *ff = file->private_data; in fuse_direct_IO() local
3047 bool async_dio = ff->fc->async_dio; in fuse_direct_IO()
3066 iov_iter_truncate(iter, fuse_round_up(ff->fc, i_size - offset)); in fuse_direct_IO()
3150 struct fuse_file *ff = file->private_data; in fuse_file_fallocate() local
3153 struct fuse_conn *fc = ff->fc; in fuse_file_fallocate()
3156 .fh = ff->fh, in fuse_file_fallocate()
3193 args.nodeid = ff->nodeid; in fuse_file_fallocate()