• Home
  • Raw
  • Download

Lines Matching refs:fc

34 static int fuse_send_open(struct fuse_conn *fc, u64 nodeid, struct file *file,  in fuse_send_open()  argument
42 if (!fc->atomic_o_trunc) in fuse_send_open()
53 return fuse_simple_request(fc, &args); in fuse_send_open()
62 struct fuse_file *fuse_file_alloc(struct fuse_conn *fc) in fuse_file_alloc() argument
70 ff->fc = fc; in fuse_file_alloc()
84 ff->kh = atomic64_inc_return(&fc->khctr); in fuse_file_alloc()
102 static void fuse_release_end(struct fuse_conn *fc, struct fuse_args *args, in fuse_release_end() argument
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()
132 int fuse_do_open(struct fuse_conn *fc, u64 nodeid, struct file *file, in fuse_do_open() argument
138 ff = fuse_file_alloc(fc); in fuse_do_open()
145 if (isdir ? !fc->no_opendir : !fc->no_open) { in fuse_do_open()
149 err = fuse_send_open(fc, nodeid, file, opcode, &outarg); in fuse_do_open()
159 fc->no_opendir = 1; in fuse_do_open()
161 fc->no_open = 1; in fuse_do_open()
193 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_finish_open() local
201 if (fc->atomic_o_trunc && (file->f_flags & O_TRUNC)) { in fuse_finish_open()
205 fi->attr_version = atomic64_inc_return(&fc->attr_version); in fuse_finish_open()
209 if (fc->writeback_cache) in fuse_finish_open()
212 if ((file->f_mode & FMODE_WRITE) && fc->writeback_cache) in fuse_finish_open()
218 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_open_common() local
221 fc->atomic_o_trunc && in fuse_open_common()
222 fc->writeback_cache; in fuse_open_common()
233 err = fuse_do_open(fc, get_node_id(inode), file, isdir); in fuse_open_common()
249 struct fuse_conn *fc = ff->fc; in fuse_prepare_release() local
258 spin_lock(&fc->lock); in fuse_prepare_release()
260 rb_erase(&ff->polled_node, &fc->polled_files); in fuse_prepare_release()
261 spin_unlock(&fc->lock); in fuse_prepare_release()
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()
312 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_release() local
315 if (fc->writeback_cache) in fuse_release()
340 u64 fuse_lock_owner_id(struct fuse_conn *fc, fl_owner_t id) in fuse_lock_owner_id() argument
342 u32 *k = fc->scramble_key; in fuse_lock_owner_id()
439 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_flush() local
448 if (fc->no_flush) in fuse_flush()
465 inarg.lock_owner = fuse_lock_owner_id(fc, id); in fuse_flush()
473 err = fuse_simple_request(fc, &args); in fuse_flush()
475 fc->no_flush = 1; in fuse_flush()
485 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_fsync_common() local
498 return fuse_simple_request(fc, &args); in fuse_fsync_common()
505 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_fsync() local
537 if (fc->no_fsync) in fuse_fsync()
542 fc->no_fsync = 1; in fuse_fsync()
635 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_aio_complete() local
639 fi->attr_version = atomic64_inc_return(&fc->attr_version); in fuse_aio_complete()
673 static void fuse_aio_complete_req(struct fuse_conn *fc, struct fuse_args *args, in fuse_aio_complete_req() argument
702 static ssize_t fuse_async_req_send(struct fuse_conn *fc, in fuse_async_req_send() argument
715 err = fuse_simple_background(fc, &ia->ap.args, GFP_KERNEL); in fuse_async_req_send()
717 fuse_aio_complete_req(fc, &ia->ap.args, err); in fuse_async_req_send()
727 struct fuse_conn *fc = ff->fc; in fuse_send_read() local
732 ia->read.in.lock_owner = fuse_lock_owner_id(fc, owner); in fuse_send_read()
736 return fuse_async_req_send(fc, ia, count); in fuse_send_read()
738 return fuse_simple_request(fc, &ia->ap.args); in fuse_send_read()
744 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_read_update_size() local
750 fi->attr_version = atomic64_inc_return(&fc->attr_version); in fuse_read_update_size()
759 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_short_read() local
761 if (fc->writeback_cache) { in fuse_short_read()
784 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_do_readpage() local
804 attr_ver = fuse_get_attr_version(fc); in fuse_do_readpage()
807 res = fuse_simple_request(fc, &ia.ap.args); in fuse_do_readpage()
837 static void fuse_readpages_end(struct fuse_conn *fc, struct fuse_args *args, in fuse_readpages_end() argument
881 struct fuse_conn *fc = ff->fc; in fuse_send_readpages() local
892 ia->read.attr_ver = fuse_get_attr_version(fc); in fuse_send_readpages()
893 if (fc->async_read) { in fuse_send_readpages()
896 err = fuse_simple_background(fc, &ap->args, GFP_KERNEL); in fuse_send_readpages()
900 res = fuse_simple_request(fc, &ap->args); in fuse_send_readpages()
903 fuse_readpages_end(fc, &ap->args, err); in fuse_send_readpages()
920 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_readpages_fill() local
925 (ap->num_pages == fc->max_pages || in fuse_readpages_fill()
926 (ap->num_pages + 1) * PAGE_SIZE > fc->max_read || in fuse_readpages_fill()
929 fc->max_pages); in fuse_readpages_fill()
957 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_readpages() local
968 data.max_pages = min_t(unsigned int, nr_pages, fc->max_pages); in fuse_readpages()
989 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_cache_read_iter() local
996 if (fc->auto_inval_data || in fuse_cache_read_iter()
1018 if (ff->fc->minor < 9) in fuse_write_args_fill()
1047 struct fuse_conn *fc = ff->fc; in fuse_send_write() local
1055 inarg->lock_owner = fuse_lock_owner_id(fc, owner); in fuse_send_write()
1059 return fuse_async_req_send(fc, ia, count); in fuse_send_write()
1061 err = fuse_simple_request(fc, &ia->ap.args); in fuse_send_write()
1070 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_write_update_size() local
1075 fi->attr_version = atomic64_inc_return(&fc->attr_version); in fuse_write_update_size()
1092 struct fuse_conn *fc = ff->fc; in fuse_send_write_pages() local
1102 err = fuse_simple_request(fc, &ap->args); in fuse_send_write_pages()
1132 struct fuse_conn *fc = get_fuse_conn(mapping->host); in fuse_fill_write_pages() local
1147 bytes = min_t(size_t, bytes, fc->max_write - count); in fuse_fill_write_pages()
1184 if (!fc->big_writes) in fuse_fill_write_pages()
1186 } while (iov_iter_count(ii) && count < fc->max_write && in fuse_fill_write_pages()
1206 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_perform_write() local
1219 fc->max_pages); in fuse_perform_write()
1417 struct fuse_conn *fc = ff->fc; in fuse_direct_io() local
1418 size_t nmax = write ? fc->max_write : fc->max_read; in fuse_direct_io()
1428 max_pages = iov_iter_npages(iter, fc->max_pages); in fuse_direct_io()
1479 max_pages = iov_iter_npages(iter, fc->max_pages); in fuse_direct_io()
1593 static void fuse_writepage_finish(struct fuse_conn *fc, in fuse_writepage_finish() argument
1612 static void fuse_send_writepage(struct fuse_conn *fc, in fuse_send_writepage() argument
1638 err = fuse_simple_background(fc, args, GFP_ATOMIC); in fuse_send_writepage()
1641 err = fuse_simple_background(fc, args, GFP_NOFS | __GFP_NOFAIL); in fuse_send_writepage()
1653 fuse_writepage_finish(fc, wpa); in fuse_send_writepage()
1677 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_flush_writepages() local
1686 fuse_send_writepage(fc, wpa, crop); in fuse_flush_writepages()
1690 static void fuse_writepage_end(struct fuse_conn *fc, struct fuse_args *args, in fuse_writepage_end() argument
1701 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_writepage_end() local
1733 fuse_send_writepage(fc, next, inarg->offset + inarg->size); in fuse_writepage_end()
1736 fuse_writepage_finish(fc, wpa); in fuse_writepage_end()
1741 static struct fuse_file *__fuse_write_file_get(struct fuse_conn *fc, in __fuse_write_file_get() argument
1757 static struct fuse_file *fuse_write_file_get(struct fuse_conn *fc, in fuse_write_file_get() argument
1760 struct fuse_file *ff = __fuse_write_file_get(fc, fi); in fuse_write_file_get()
1767 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_write_inode() local
1772 ff = __fuse_write_file_get(fc, fi); in fuse_write_inode()
1803 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_writepage_locked() local
1822 wpa->ia.ff = fuse_write_file_get(fc, fi); in fuse_writepage_locked()
1896 struct fuse_conn *fc = get_fuse_conn(data->inode); in fuse_pages_realloc() local
1902 fc->max_pages); in fuse_pages_realloc()
2003 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_writepages_fill() local
2010 data->ff = fuse_write_file_get(fc, fi); in fuse_writepages_fill()
2024 (is_writeback || ap->num_pages == fc->max_pages || in fuse_writepages_fill()
2025 (ap->num_pages + 1) * PAGE_SIZE > fc->max_write || in fuse_writepages_fill()
2114 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_writepages() local
2127 data.orig_pages = kcalloc(fc->max_pages, in fuse_writepages()
2157 struct fuse_conn *fc = get_fuse_conn(file_inode(file)); in fuse_write_begin() local
2162 WARN_ON(!fc->writeback_cache); in fuse_write_begin()
2306 static int convert_fuse_file_lock(struct fuse_conn *fc, in convert_fuse_file_lock() argument
2328 fl->fl_pid = pid_nr_ns(find_pid_ns(ffl->pid, fc->pid_ns), &init_pid_ns); in convert_fuse_file_lock()
2344 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_lk_fill() local
2349 inarg->owner = fuse_lock_owner_id(fc, fl->fl_owner); in fuse_lk_fill()
2366 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_getlk() local
2376 err = fuse_simple_request(fc, &args); in fuse_getlk()
2378 err = convert_fuse_file_lock(fc, &outarg.lk, fl); in fuse_getlk()
2386 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_setlk() local
2391 pid_t pid_nr = pid_nr_ns(pid, fc->pid_ns); in fuse_setlk()
2404 err = fuse_simple_request(fc, &args); in fuse_setlk()
2416 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_file_lock() local
2422 if (fc->no_lock) { in fuse_file_lock()
2428 if (fc->no_lock) in fuse_file_lock()
2439 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_file_flock() local
2442 if (fc->no_flock) { in fuse_file_flock()
2458 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_bmap() local
2464 if (!inode->i_sb->s_bdev || fc->no_bmap) in fuse_bmap()
2478 err = fuse_simple_request(fc, &args); in fuse_bmap()
2480 fc->no_bmap = 1; in fuse_bmap()
2488 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_lseek() local
2499 if (fc->no_lseek) in fuse_lseek()
2510 err = fuse_simple_request(fc, &args); in fuse_lseek()
2513 fc->no_lseek = 1; in fuse_lseek()
2599 static int fuse_verify_ioctl_iov(struct fuse_conn *fc, struct iovec *iov, in fuse_verify_ioctl_iov() argument
2603 u32 max = fc->max_pages << PAGE_SHIFT; in fuse_verify_ioctl_iov()
2613 static int fuse_copy_ioctl_iovec(struct fuse_conn *fc, struct iovec *dst, in fuse_copy_ioctl_iovec() argument
2620 if (fc->minor < 16) { in fuse_copy_ioctl_iovec()
2699 struct fuse_conn *fc = ff->fc; in fuse_do_ioctl() local
2732 ap.pages = fuse_pages_alloc(fc->max_pages, GFP_KERNEL, &ap.descs); in fuse_do_ioctl()
2737 fuse_page_descs_length_init(ap.descs, 0, fc->max_pages); in fuse_do_ioctl()
2773 if (max_pages > fc->max_pages) in fuse_do_ioctl()
2810 transferred = fuse_simple_request(fc, &ap.args); in fuse_do_ioctl()
2838 err = fuse_copy_ioctl_iovec(fc, iov_page, vaddr, in fuse_do_ioctl()
2848 err = fuse_verify_ioctl_iov(fc, in_iov, in_iovs); in fuse_do_ioctl()
2852 err = fuse_verify_ioctl_iov(fc, out_iov, out_iovs); in fuse_do_ioctl()
2885 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_ioctl_common() local
2887 if (!fuse_allow_current_process(fc)) in fuse_ioctl_common()
2913 static struct rb_node **fuse_find_polled_node(struct fuse_conn *fc, u64 kh, in fuse_find_polled_node() argument
2916 struct rb_node **link = &fc->polled_files.rb_node; in fuse_find_polled_node()
2944 static void fuse_register_polled_file(struct fuse_conn *fc, in fuse_register_polled_file() argument
2947 spin_lock(&fc->lock); in fuse_register_polled_file()
2951 link = fuse_find_polled_node(fc, ff->kh, &parent); in fuse_register_polled_file()
2954 rb_insert_color(&ff->polled_node, &fc->polled_files); in fuse_register_polled_file()
2956 spin_unlock(&fc->lock); in fuse_register_polled_file()
2962 struct fuse_conn *fc = ff->fc; in fuse_file_poll() local
2968 if (fc->no_poll) in fuse_file_poll()
2980 fuse_register_polled_file(fc, ff); in fuse_file_poll()
2991 err = fuse_simple_request(fc, &args); in fuse_file_poll()
2996 fc->no_poll = 1; in fuse_file_poll()
3007 int fuse_notify_poll_wakeup(struct fuse_conn *fc, in fuse_notify_poll_wakeup() argument
3013 spin_lock(&fc->lock); in fuse_notify_poll_wakeup()
3015 link = fuse_find_polled_node(fc, kh, NULL); in fuse_notify_poll_wakeup()
3023 spin_unlock(&fc->lock); in fuse_notify_poll_wakeup()
3041 static inline loff_t fuse_round_up(struct fuse_conn *fc, loff_t off) in fuse_round_up() argument
3043 return round_up(off, fc->max_pages << PAGE_SHIFT); in fuse_round_up()
3053 bool async_dio = ff->fc->async_dio; in fuse_direct_IO()
3072 iov_iter_truncate(iter, fuse_round_up(ff->fc, i_size - offset)); in fuse_direct_IO()
3159 struct fuse_conn *fc = ff->fc; in fuse_file_fallocate() local
3174 if (fc->no_fallocate) in fuse_file_fallocate()
3203 err = fuse_simple_request(fc, &args); in fuse_file_fallocate()
3205 fc->no_fallocate = 1; in fuse_file_fallocate()
3215 if (changed && fc->writeback_cache) in fuse_file_fallocate()
3243 struct fuse_conn *fc = ff_in->fc; in __fuse_copy_file_range() local
3258 bool is_unstable = (!fc->writeback_cache) && in __fuse_copy_file_range()
3261 if (fc->no_copy_file_range) in __fuse_copy_file_range()
3267 if (fc->writeback_cache) { in __fuse_copy_file_range()
3281 if (fc->writeback_cache) { in __fuse_copy_file_range()
3298 err = fuse_simple_request(fc, &args); in __fuse_copy_file_range()
3300 fc->no_copy_file_range = 1; in __fuse_copy_file_range()
3306 if (fc->writeback_cache) { in __fuse_copy_file_range()