Lines Matching refs:ff
47 struct fuse_file *ff; in fuse_file_alloc() local
49 ff = kmalloc(sizeof(struct fuse_file), GFP_KERNEL); in fuse_file_alloc()
50 if (unlikely(!ff)) in fuse_file_alloc()
53 ff->fc = fc; in fuse_file_alloc()
54 ff->reserved_req = fuse_request_alloc(0); in fuse_file_alloc()
55 if (unlikely(!ff->reserved_req)) { in fuse_file_alloc()
56 kfree(ff); in fuse_file_alloc()
60 INIT_LIST_HEAD(&ff->write_entry); in fuse_file_alloc()
61 atomic_set(&ff->count, 0); in fuse_file_alloc()
62 RB_CLEAR_NODE(&ff->polled_node); in fuse_file_alloc()
63 init_waitqueue_head(&ff->poll_wait); in fuse_file_alloc()
66 ff->kh = ++fc->khctr; in fuse_file_alloc()
69 return ff; in fuse_file_alloc()
72 void fuse_file_free(struct fuse_file *ff) in fuse_file_free() argument
74 fuse_request_free(ff->reserved_req); in fuse_file_free()
75 kfree(ff); in fuse_file_free()
78 struct fuse_file *fuse_file_get(struct fuse_file *ff) in fuse_file_get() argument
80 atomic_inc(&ff->count); in fuse_file_get()
81 return ff; in fuse_file_get()
89 static void fuse_file_put(struct fuse_file *ff, bool sync) in fuse_file_put() argument
91 if (atomic_dec_and_test(&ff->count)) { in fuse_file_put()
92 struct fuse_req *req = ff->reserved_req; in fuse_file_put()
94 if (ff->fc->no_open) { in fuse_file_put()
101 fuse_put_request(ff->fc, req); in fuse_file_put()
104 fuse_request_send(ff->fc, req); in fuse_file_put()
106 fuse_put_request(ff->fc, req); in fuse_file_put()
110 fuse_request_send_background(ff->fc, req); in fuse_file_put()
112 kfree(ff); in fuse_file_put()
119 struct fuse_file *ff; in fuse_do_open() local
122 ff = fuse_file_alloc(fc); in fuse_do_open()
123 if (!ff) in fuse_do_open()
126 ff->fh = 0; in fuse_do_open()
127 ff->open_flags = FOPEN_KEEP_CACHE; /* Default for no-open */ in fuse_do_open()
134 ff->fh = outarg.fh; in fuse_do_open()
135 ff->open_flags = outarg.open_flags; in fuse_do_open()
138 fuse_file_free(ff); in fuse_do_open()
146 ff->open_flags &= ~FOPEN_DIRECT_IO; in fuse_do_open()
148 ff->nodeid = nodeid; in fuse_do_open()
149 file->private_data = fuse_file_get(ff); in fuse_do_open()
160 struct fuse_file *ff = file->private_data; in fuse_link_write_file() local
166 if (list_empty(&ff->write_entry)) in fuse_link_write_file()
167 list_add(&ff->write_entry, &fi->write_files); in fuse_link_write_file()
173 struct fuse_file *ff = file->private_data; in fuse_finish_open() local
176 if (ff->open_flags & FOPEN_DIRECT_IO) in fuse_finish_open()
178 if (!(ff->open_flags & FOPEN_KEEP_CACHE)) in fuse_finish_open()
180 if (ff->open_flags & FOPEN_NONSEEKABLE) in fuse_finish_open()
223 static void fuse_prepare_release(struct fuse_file *ff, int flags, int opcode) in fuse_prepare_release() argument
225 struct fuse_conn *fc = ff->fc; in fuse_prepare_release()
226 struct fuse_req *req = ff->reserved_req; in fuse_prepare_release()
230 list_del(&ff->write_entry); in fuse_prepare_release()
231 if (!RB_EMPTY_NODE(&ff->polled_node)) in fuse_prepare_release()
232 rb_erase(&ff->polled_node, &fc->polled_files); in fuse_prepare_release()
235 wake_up_interruptible_all(&ff->poll_wait); in fuse_prepare_release()
237 inarg->fh = ff->fh; in fuse_prepare_release()
240 req->in.h.nodeid = ff->nodeid; in fuse_prepare_release()
248 struct fuse_file *ff; in fuse_release_common() local
251 ff = file->private_data; in fuse_release_common()
252 if (unlikely(!ff)) in fuse_release_common()
255 req = ff->reserved_req; in fuse_release_common()
256 fuse_prepare_release(ff, file->f_flags, opcode); in fuse_release_common()
258 if (ff->flock) { in fuse_release_common()
261 inarg->lock_owner = fuse_lock_owner_id(ff->fc, in fuse_release_common()
276 fuse_file_put(ff, ff->fc->destroy_req != NULL); in fuse_release_common()
298 void fuse_sync_release(struct fuse_file *ff, int flags) in fuse_sync_release() argument
300 WARN_ON(atomic_read(&ff->count) > 1); in fuse_sync_release()
301 fuse_prepare_release(ff, flags, FUSE_RELEASE); in fuse_sync_release()
302 __set_bit(FR_FORCE, &ff->reserved_req->flags); in fuse_sync_release()
303 __clear_bit(FR_BACKGROUND, &ff->reserved_req->flags); in fuse_sync_release()
304 fuse_request_send(ff->fc, ff->reserved_req); in fuse_sync_release()
305 fuse_put_request(ff->fc, ff->reserved_req); in fuse_sync_release()
306 kfree(ff); in fuse_sync_release()
401 struct fuse_file *ff = file->private_data; in fuse_flush() local
422 inarg.fh = ff->fh; in fuse_flush()
445 struct fuse_file *ff = file->private_data; in fuse_fsync_common() local
473 inarg.fh = ff->fh; in fuse_fsync_common()
503 struct fuse_file *ff = file->private_data; in fuse_read_fill() local
505 inarg->fh = ff->fh; in fuse_read_fill()
510 req->in.h.nodeid = ff->nodeid; in fuse_read_fill()
640 struct fuse_file *ff = file->private_data; in fuse_send_read() local
641 struct fuse_conn *fc = ff->fc; in fuse_send_read()
794 if (req->ff) in fuse_readpages_end()
795 fuse_file_put(req->ff, false); in fuse_readpages_end()
800 struct fuse_file *ff = file->private_data; in fuse_send_readpages() local
801 struct fuse_conn *fc = ff->fc; in fuse_send_readpages()
811 req->ff = fuse_file_get(ff); in fuse_send_readpages()
925 static void fuse_write_fill(struct fuse_req *req, struct fuse_file *ff, in fuse_write_fill() argument
931 inarg->fh = ff->fh; in fuse_write_fill()
935 req->in.h.nodeid = ff->nodeid; in fuse_write_fill()
937 if (ff->fc->minor < 9) in fuse_write_fill()
952 struct fuse_file *ff = file->private_data; in fuse_send_write() local
953 struct fuse_conn *fc = ff->fc; in fuse_send_write()
956 fuse_write_fill(req, ff, pos, count); in fuse_send_write()
1313 struct fuse_file *ff = file->private_data; in fuse_direct_io() local
1314 struct fuse_conn *fc = ff->fc; in fuse_direct_io()
1442 if (req->ff) in fuse_writepage_free()
1443 fuse_file_put(req->ff, false); in fuse_writepage_free()
1532 next->ff = fuse_file_get(req->ff); in fuse_writepage_end()
1569 struct fuse_file *ff = NULL; in __fuse_write_file_get() local
1573 ff = list_entry(fi->write_files.next, struct fuse_file, in __fuse_write_file_get()
1575 fuse_file_get(ff); in __fuse_write_file_get()
1579 return ff; in __fuse_write_file_get()
1585 struct fuse_file *ff = __fuse_write_file_get(fc, fi); in fuse_write_file_get() local
1586 WARN_ON(!ff); in fuse_write_file_get()
1587 return ff; in fuse_write_file_get()
1594 struct fuse_file *ff; in fuse_write_inode() local
1597 ff = __fuse_write_file_get(fc, fi); in fuse_write_inode()
1598 err = fuse_flush_times(inode, ff); in fuse_write_inode()
1599 if (ff) in fuse_write_inode()
1600 fuse_file_put(ff, 0); in fuse_write_inode()
1628 req->ff = fuse_write_file_get(fc, fi); in fuse_writepage_locked()
1629 if (!req->ff) in fuse_writepage_locked()
1632 fuse_write_fill(req, req->ff, page_offset(page), 0); in fuse_writepage_locked()
1691 struct fuse_file *ff; member
1705 req->ff = fuse_file_get(data->ff); in fuse_writepages_send()
1786 if (!data->ff) { in fuse_writepages_fill()
1788 data->ff = fuse_write_file_get(fc, get_fuse_inode(inode)); in fuse_writepages_fill()
1789 if (!data->ff) in fuse_writepages_fill()
1836 fuse_write_fill(req, data->ff, page_offset(page), 0); in fuse_writepages_fill()
1896 data.ff = NULL; in fuse_writepages()
1912 if (data.ff) in fuse_writepages()
1913 fuse_file_put(data.ff, false); in fuse_writepages()
2102 struct fuse_file *ff = file->private_data; in fuse_lk_fill() local
2105 inarg->fh = ff->fh; in fuse_lk_fill()
2201 struct fuse_file *ff = file->private_data; in fuse_file_flock() local
2204 ff->flock = true; in fuse_file_flock()
2439 struct fuse_file *ff = file->private_data; in fuse_do_ioctl() local
2440 struct fuse_conn *fc = ff->fc; in fuse_do_ioctl()
2442 .fh = ff->fh, in fuse_do_ioctl()
2527 req->in.h.nodeid = ff->nodeid; in fuse_do_ioctl()
2657 struct fuse_file *ff; in fuse_find_polled_node() local
2660 ff = rb_entry(last, struct fuse_file, polled_node); in fuse_find_polled_node()
2662 if (kh < ff->kh) in fuse_find_polled_node()
2664 else if (kh > ff->kh) in fuse_find_polled_node()
2682 struct fuse_file *ff) in fuse_register_polled_file() argument
2685 if (RB_EMPTY_NODE(&ff->polled_node)) { in fuse_register_polled_file()
2688 link = fuse_find_polled_node(fc, ff->kh, &parent); in fuse_register_polled_file()
2690 rb_link_node(&ff->polled_node, parent, link); in fuse_register_polled_file()
2691 rb_insert_color(&ff->polled_node, &fc->polled_files); in fuse_register_polled_file()
2698 struct fuse_file *ff = file->private_data; in fuse_file_poll() local
2699 struct fuse_conn *fc = ff->fc; in fuse_file_poll()
2700 struct fuse_poll_in inarg = { .fh = ff->fh, .kh = ff->kh }; in fuse_file_poll()
2708 poll_wait(file, &ff->poll_wait, wait); in fuse_file_poll()
2715 if (waitqueue_active(&ff->poll_wait)) { in fuse_file_poll()
2717 fuse_register_polled_file(fc, ff); in fuse_file_poll()
2721 args.in.h.nodeid = ff->nodeid; in fuse_file_poll()
2754 struct fuse_file *ff; in fuse_notify_poll_wakeup() local
2756 ff = rb_entry(*link, struct fuse_file, polled_node); in fuse_notify_poll_wakeup()
2757 wake_up_interruptible_sync(&ff->poll_wait); in fuse_notify_poll_wakeup()
2789 struct fuse_file *ff = file->private_data; in fuse_direct_IO() local
2790 bool async_dio = ff->fc->async_dio; in fuse_direct_IO()
2883 struct fuse_file *ff = file->private_data; in fuse_file_fallocate() local
2886 struct fuse_conn *fc = ff->fc; in fuse_file_fallocate()
2889 .fh = ff->fh, in fuse_file_fallocate()
2921 args.in.h.nodeid = ff->nodeid; in fuse_file_fallocate()