Lines Matching full:ff
60 struct fuse_file *ff; in fuse_file_alloc() local
62 ff = kzalloc(sizeof(struct fuse_file), GFP_KERNEL_ACCOUNT); in fuse_file_alloc()
63 if (unlikely(!ff)) in fuse_file_alloc()
66 ff->fm = fm; in fuse_file_alloc()
67 ff->release_args = kzalloc(sizeof(*ff->release_args), in fuse_file_alloc()
69 if (!ff->release_args) { in fuse_file_alloc()
70 kfree(ff); in fuse_file_alloc()
74 INIT_LIST_HEAD(&ff->write_entry); in fuse_file_alloc()
75 mutex_init(&ff->readdir.lock); in fuse_file_alloc()
76 refcount_set(&ff->count, 1); in fuse_file_alloc()
77 RB_CLEAR_NODE(&ff->polled_node); in fuse_file_alloc()
78 init_waitqueue_head(&ff->poll_wait); in fuse_file_alloc()
80 ff->kh = atomic64_inc_return(&fm->fc->khctr); in fuse_file_alloc()
82 return ff; in fuse_file_alloc()
85 void fuse_file_free(struct fuse_file *ff) in fuse_file_free() argument
87 kfree(ff->release_args); in fuse_file_free()
88 mutex_destroy(&ff->readdir.lock); in fuse_file_free()
89 kfree(ff); in fuse_file_free()
92 static struct fuse_file *fuse_file_get(struct fuse_file *ff) in fuse_file_get() argument
94 refcount_inc(&ff->count); in fuse_file_get()
95 return ff; in fuse_file_get()
107 static void fuse_file_put(struct fuse_file *ff, bool sync, bool isdir) in fuse_file_put() argument
109 if (refcount_dec_and_test(&ff->count)) { in fuse_file_put()
110 struct fuse_args *args = &ff->release_args->args; in fuse_file_put()
112 if (isdir ? ff->fm->fc->no_opendir : ff->fm->fc->no_open) { in fuse_file_put()
114 fuse_release_end(ff->fm, args, 0); in fuse_file_put()
116 fuse_simple_request(ff->fm, args); in fuse_file_put()
117 fuse_release_end(ff->fm, args, 0); in fuse_file_put()
120 if (fuse_simple_background(ff->fm, args, in fuse_file_put()
122 fuse_release_end(ff->fm, args, -ENOTCONN); in fuse_file_put()
124 kfree(ff); in fuse_file_put()
132 struct fuse_file *ff; in fuse_file_open() local
135 ff = fuse_file_alloc(fm); in fuse_file_open()
136 if (!ff) in fuse_file_open()
139 ff->fh = 0; in fuse_file_open()
141 ff->open_flags = FOPEN_KEEP_CACHE | (isdir ? FOPEN_CACHE_DIR : 0); in fuse_file_open()
148 ff->fh = outarg.fh; in fuse_file_open()
149 ff->open_flags = outarg.open_flags; in fuse_file_open()
152 fuse_file_free(ff); in fuse_file_open()
163 ff->open_flags &= ~FOPEN_DIRECT_IO; in fuse_file_open()
165 ff->nodeid = nodeid; in fuse_file_open()
167 return ff; in fuse_file_open()
173 struct fuse_file *ff = fuse_file_open(fm, nodeid, file->f_flags, isdir); in fuse_do_open() local
175 if (!IS_ERR(ff)) in fuse_do_open()
176 file->private_data = ff; in fuse_do_open()
178 return PTR_ERR_OR_ZERO(ff); in fuse_do_open()
186 struct fuse_file *ff = file->private_data; in fuse_link_write_file() local
192 if (list_empty(&ff->write_entry)) in fuse_link_write_file()
193 list_add(&ff->write_entry, &fi->write_files); in fuse_link_write_file()
199 struct fuse_file *ff = file->private_data; in fuse_finish_open() local
202 if (ff->open_flags & FOPEN_STREAM) in fuse_finish_open()
204 else if (ff->open_flags & FOPEN_NONSEEKABLE) in fuse_finish_open()
259 struct fuse_file *ff = file->private_data; in fuse_open_common() local
263 else if (!(ff->open_flags & FOPEN_KEEP_CACHE)) in fuse_open_common()
275 static void fuse_prepare_release(struct fuse_inode *fi, struct fuse_file *ff, in fuse_prepare_release() argument
278 struct fuse_conn *fc = ff->fm->fc; in fuse_prepare_release()
279 struct fuse_release_args *ra = ff->release_args; in fuse_prepare_release()
284 list_del(&ff->write_entry); in fuse_prepare_release()
288 if (!RB_EMPTY_NODE(&ff->polled_node)) in fuse_prepare_release()
289 rb_erase(&ff->polled_node, &fc->polled_files); in fuse_prepare_release()
292 wake_up_interruptible_all(&ff->poll_wait); in fuse_prepare_release()
294 ra->inarg.fh = ff->fh; in fuse_prepare_release()
300 ra->args.nodeid = ff->nodeid; in fuse_prepare_release()
305 void fuse_file_release(struct inode *inode, struct fuse_file *ff, in fuse_file_release() argument
309 struct fuse_release_args *ra = ff->release_args; in fuse_file_release()
312 fuse_prepare_release(fi, ff, open_flags, opcode); in fuse_file_release()
314 if (ff->flock) { in fuse_file_release()
316 ra->inarg.lock_owner = fuse_lock_owner_id(ff->fm->fc, id); in fuse_file_release()
330 fuse_file_put(ff, ff->fm->fc->destroy, isdir); in fuse_file_release()
361 void fuse_sync_release(struct fuse_inode *fi, struct fuse_file *ff, in fuse_sync_release() argument
364 WARN_ON(refcount_read(&ff->count) > 1); in fuse_sync_release()
365 fuse_prepare_release(fi, ff, flags, FUSE_RELEASE); in fuse_sync_release()
370 fuse_file_put(ff, true, false); in fuse_sync_release()
485 struct fuse_file *ff = file->private_data; in fuse_flush() local
493 if (ff->open_flags & FOPEN_NOFLUSH && !fm->fc->writeback_cache) in fuse_flush()
513 inarg.fh = ff->fh; in fuse_flush()
543 struct fuse_file *ff = file->private_data; in fuse_fsync_common() local
548 inarg.fh = ff->fh; in fuse_fsync_common()
611 struct fuse_file *ff = file->private_data; in fuse_read_args_fill() local
614 ia->read.in.fh = ff->fh; in fuse_read_args_fill()
619 args->nodeid = ff->nodeid; in fuse_read_args_fill()
784 struct fuse_file *ff = file->private_data; in fuse_send_read() local
785 struct fuse_mount *fm = ff->fm; in fuse_send_read()
926 if (ia->ff) in fuse_readpages_end()
927 fuse_file_put(ia->ff, false, false); in fuse_readpages_end()
934 struct fuse_file *ff = file->private_data; in fuse_send_readpages() local
935 struct fuse_mount *fm = ff->fm; in fuse_send_readpages()
956 ia->ff = fuse_file_get(ff); in fuse_send_readpages()
1033 static void fuse_write_args_fill(struct fuse_io_args *ia, struct fuse_file *ff, in fuse_write_args_fill() argument
1038 ia->write.in.fh = ff->fh; in fuse_write_args_fill()
1042 args->nodeid = ff->nodeid; in fuse_write_args_fill()
1044 if (ff->fm->fc->minor < 9) in fuse_write_args_fill()
1072 struct fuse_file *ff = file->private_data; in fuse_send_write() local
1073 struct fuse_mount *fm = ff->fm; in fuse_send_write()
1077 fuse_write_args_fill(ia, ff, pos, count); in fuse_send_write()
1119 struct fuse_file *ff = file->private_data; in fuse_send_write_pages() local
1120 struct fuse_mount *fm = ff->fm; in fuse_send_write_pages()
1128 fuse_write_args_fill(ia, ff, pos, count); in fuse_send_write_pages()
1433 struct fuse_file *ff = file->private_data; in fuse_direct_io() local
1434 struct fuse_conn *fc = ff->fm->fc; in fuse_direct_io()
1444 bool fopen_direct_io = ff->open_flags & FOPEN_DIRECT_IO; in fuse_direct_io()
1572 struct fuse_file *ff = file->private_data; in fuse_direct_write_iter() local
1576 !(ff->open_flags & FOPEN_PARALLEL_DIRECT_WRITES) || in fuse_direct_write_iter()
1624 struct fuse_file *ff = file->private_data; in fuse_file_read_iter() local
1633 if (!(ff->open_flags & FOPEN_DIRECT_IO)) in fuse_file_read_iter()
1642 struct fuse_file *ff = file->private_data; in fuse_file_write_iter() local
1651 if (!(ff->open_flags & FOPEN_DIRECT_IO)) in fuse_file_write_iter()
1668 if (wpa->ia.ff) in fuse_writepage_free()
1669 fuse_file_put(wpa->ia.ff, false, false); in fuse_writepage_free()
1842 next->ia.ff = fuse_file_get(wpa->ia.ff); in fuse_writepage_end()
1878 struct fuse_file *ff; in __fuse_write_file_get() local
1881 ff = list_first_entry_or_null(&fi->write_files, struct fuse_file, in __fuse_write_file_get()
1883 if (ff) in __fuse_write_file_get()
1884 fuse_file_get(ff); in __fuse_write_file_get()
1887 return ff; in __fuse_write_file_get()
1892 struct fuse_file *ff = __fuse_write_file_get(fi); in fuse_write_file_get() local
1893 WARN_ON(!ff); in fuse_write_file_get()
1894 return ff; in fuse_write_file_get()
1900 struct fuse_file *ff; in fuse_write_inode() local
1914 ff = __fuse_write_file_get(fi); in fuse_write_inode()
1915 err = fuse_flush_times(inode, ff); in fuse_write_inode()
1916 if (ff) in fuse_write_inode()
1917 fuse_file_put(ff, false, false); in fuse_write_inode()
1978 wpa->ia.ff = fuse_write_file_get(fi); in fuse_writepage_locked()
1979 if (!wpa->ia.ff) in fuse_writepage_locked()
1983 fuse_write_args_fill(&wpa->ia, wpa->ia.ff, page_offset(page), 0); in fuse_writepage_locked()
2049 struct fuse_file *ff; member
2089 wpa->ia.ff = fuse_file_get(data->ff); in fuse_writepages_send()
2201 if (!data->ff) { in fuse_writepages_fill()
2203 data->ff = fuse_write_file_get(fi); in fuse_writepages_fill()
2204 if (!data->ff) in fuse_writepages_fill()
2243 fuse_write_args_fill(&wpa->ia, data->ff, folio_pos(folio), 0); in fuse_writepages_fill()
2300 data.ff = NULL; in fuse_writepages()
2314 if (data.ff) in fuse_writepages()
2315 fuse_file_put(data.ff, false, false); in fuse_writepages()
2468 struct fuse_file *ff = file->private_data; in fuse_file_mmap() local
2469 struct fuse_conn *fc = ff->fm->fc; in fuse_file_mmap()
2475 if (ff->open_flags & FOPEN_DIRECT_IO) { in fuse_file_mmap()
2538 struct fuse_file *ff = file->private_data; in fuse_lk_fill() local
2541 inarg->fh = ff->fh; in fuse_lk_fill()
2638 struct fuse_file *ff = file->private_data; in fuse_file_flock() local
2641 ff->flock = true; in fuse_file_flock()
2682 struct fuse_file *ff = file->private_data; in fuse_lseek() local
2685 .fh = ff->fh, in fuse_lseek()
2696 args.nodeid = ff->nodeid; in fuse_lseek()
2765 struct fuse_file *ff; in fuse_find_polled_node() local
2768 ff = rb_entry(last, struct fuse_file, polled_node); in fuse_find_polled_node()
2770 if (kh < ff->kh) in fuse_find_polled_node()
2772 else if (kh > ff->kh) in fuse_find_polled_node()
2790 struct fuse_file *ff) in fuse_register_polled_file() argument
2793 if (RB_EMPTY_NODE(&ff->polled_node)) { in fuse_register_polled_file()
2796 link = fuse_find_polled_node(fc, ff->kh, &parent); in fuse_register_polled_file()
2798 rb_link_node(&ff->polled_node, parent, link); in fuse_register_polled_file()
2799 rb_insert_color(&ff->polled_node, &fc->polled_files); in fuse_register_polled_file()
2806 struct fuse_file *ff = file->private_data; in fuse_file_poll() local
2807 struct fuse_mount *fm = ff->fm; in fuse_file_poll()
2808 struct fuse_poll_in inarg = { .fh = ff->fh, .kh = ff->kh }; in fuse_file_poll()
2816 poll_wait(file, &ff->poll_wait, wait); in fuse_file_poll()
2823 if (waitqueue_active(&ff->poll_wait)) { in fuse_file_poll()
2825 fuse_register_polled_file(fm->fc, ff); in fuse_file_poll()
2829 args.nodeid = ff->nodeid; in fuse_file_poll()
2862 struct fuse_file *ff; in fuse_notify_poll_wakeup() local
2864 ff = rb_entry(*link, struct fuse_file, polled_node); in fuse_notify_poll_wakeup()
2865 wake_up_interruptible_sync(&ff->poll_wait); in fuse_notify_poll_wakeup()
2897 struct fuse_file *ff = file->private_data; in fuse_direct_IO() local
2927 io->async = ff->fm->fc->async_dio; in fuse_direct_IO()
2933 iov_iter_truncate(iter, fuse_round_up(ff->fm->fc, i_size - offset)); in fuse_direct_IO()
3000 struct fuse_file *ff = file->private_data; in fuse_file_fallocate() local
3003 struct fuse_mount *fm = ff->fm; in fuse_file_fallocate()
3006 .fh = ff->fh, in fuse_file_fallocate()
3054 args.nodeid = ff->nodeid; in fuse_file_fallocate()