Lines Matching refs:fc
24 static int fuse_send_open(struct fuse_conn *fc, u64 nodeid, struct file *file, in fuse_send_open() argument
32 if (!fc->atomic_o_trunc) in fuse_send_open()
43 return fuse_simple_request(fc, &args); in fuse_send_open()
46 struct fuse_file *fuse_file_alloc(struct fuse_conn *fc) in fuse_file_alloc() argument
54 ff->fc = fc; in fuse_file_alloc()
66 spin_lock(&fc->lock); in fuse_file_alloc()
67 ff->kh = ++fc->khctr; in fuse_file_alloc()
68 spin_unlock(&fc->lock); in fuse_file_alloc()
85 static void fuse_release_end(struct fuse_conn *fc, struct fuse_req *req) in fuse_release_end() argument
95 if (ff->fc->no_open) { in fuse_file_put()
102 fuse_put_request(ff->fc, req); in fuse_file_put()
106 fuse_request_send(ff->fc, req); in fuse_file_put()
108 fuse_put_request(ff->fc, req); in fuse_file_put()
112 fuse_request_send_background(ff->fc, req); in fuse_file_put()
118 int fuse_do_open(struct fuse_conn *fc, u64 nodeid, struct file *file, in fuse_do_open() argument
124 ff = fuse_file_alloc(fc); in fuse_do_open()
130 if (!fc->no_open || isdir) { in fuse_do_open()
134 err = fuse_send_open(fc, nodeid, file, opcode, &outarg); in fuse_do_open()
143 fc->no_open = 1; in fuse_do_open()
160 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_link_write_file() local
167 spin_lock(&fc->lock); in fuse_link_write_file()
170 spin_unlock(&fc->lock); in fuse_link_write_file()
176 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_finish_open() local
184 if (fc->atomic_o_trunc && (file->f_flags & O_TRUNC)) { in fuse_finish_open()
187 spin_lock(&fc->lock); in fuse_finish_open()
188 fi->attr_version = ++fc->attr_version; in fuse_finish_open()
190 spin_unlock(&fc->lock); in fuse_finish_open()
192 if (fc->writeback_cache) in fuse_finish_open()
195 if ((file->f_mode & FMODE_WRITE) && fc->writeback_cache) in fuse_finish_open()
201 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_open_common() local
204 fc->atomic_o_trunc && in fuse_open_common()
205 fc->writeback_cache; in fuse_open_common()
214 err = fuse_do_open(fc, get_node_id(inode), file, isdir); in fuse_open_common()
227 struct fuse_conn *fc = ff->fc; in fuse_prepare_release() local
231 spin_lock(&fc->lock); in fuse_prepare_release()
234 rb_erase(&ff->polled_node, &fc->polled_files); in fuse_prepare_release()
235 spin_unlock(&fc->lock); in fuse_prepare_release()
258 inarg->lock_owner = fuse_lock_owner_id(ff->fc, in fuse_release_common()
273 fuse_file_put(ff, ff->fc->destroy_req != NULL); in fuse_release_common()
283 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_release() local
286 if (fc->writeback_cache) in fuse_release()
311 u64 fuse_lock_owner_id(struct fuse_conn *fc, fl_owner_t id) in fuse_lock_owner_id() argument
313 u32 *k = fc->scramble_key; in fuse_lock_owner_id()
338 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_range_is_writeback() local
343 spin_lock(&fc->lock); in fuse_range_is_writeback()
355 spin_unlock(&fc->lock); in fuse_range_is_writeback()
397 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_flush() local
406 if (fc->no_flush) in fuse_flush()
421 req = fuse_get_req_nofail_nopages(fc, file); in fuse_flush()
424 inarg.lock_owner = fuse_lock_owner_id(fc, id); in fuse_flush()
431 fuse_request_send(fc, req); in fuse_flush()
433 fuse_put_request(fc, req); in fuse_flush()
435 fc->no_flush = 1; in fuse_flush()
445 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_fsync_common() local
480 if ((!isdir && fc->no_fsync) || (isdir && fc->no_fsyncdir)) in fuse_fsync_common()
491 err = fuse_simple_request(fc, &args); in fuse_fsync_common()
494 fc->no_fsyncdir = 1; in fuse_fsync_common()
496 fc->no_fsync = 1; in fuse_fsync_common()
594 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_aio_complete() local
597 spin_lock(&fc->lock); in fuse_aio_complete()
598 fi->attr_version = ++fc->attr_version; in fuse_aio_complete()
599 spin_unlock(&fc->lock); in fuse_aio_complete()
608 static void fuse_aio_complete_req(struct fuse_conn *fc, struct fuse_req *req) in fuse_aio_complete_req() argument
628 static size_t fuse_async_req_send(struct fuse_conn *fc, struct fuse_req *req, in fuse_async_req_send() argument
641 fuse_request_send_background(fc, req); in fuse_async_req_send()
651 struct fuse_conn *fc = ff->fc; in fuse_send_read() local
658 inarg->lock_owner = fuse_lock_owner_id(fc, owner); in fuse_send_read()
662 return fuse_async_req_send(fc, req, count, io); in fuse_send_read()
664 fuse_request_send(fc, req); in fuse_send_read()
671 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_read_update_size() local
674 spin_lock(&fc->lock); in fuse_read_update_size()
677 fi->attr_version = ++fc->attr_version; in fuse_read_update_size()
680 spin_unlock(&fc->lock); in fuse_read_update_size()
687 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_short_read() local
689 if (fc->writeback_cache) { in fuse_short_read()
714 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_do_readpage() local
729 req = fuse_get_req(fc, 1); in fuse_do_readpage()
733 attr_ver = fuse_get_attr_version(fc); in fuse_do_readpage()
755 fuse_put_request(fc, req); in fuse_do_readpage()
776 static void fuse_readpages_end(struct fuse_conn *fc, struct fuse_req *req) in fuse_readpages_end() argument
814 struct fuse_conn *fc = ff->fc; in fuse_send_readpages() local
822 req->misc.read.attr_ver = fuse_get_attr_version(fc); in fuse_send_readpages()
823 if (fc->async_read) { in fuse_send_readpages()
826 fuse_request_send_background(fc, req); in fuse_send_readpages()
828 fuse_request_send(fc, req); in fuse_send_readpages()
829 fuse_readpages_end(fc, req); in fuse_send_readpages()
830 fuse_put_request(fc, req); in fuse_send_readpages()
846 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_readpages_fill() local
852 (req->num_pages + 1) * PAGE_SIZE > fc->max_read || in fuse_readpages_fill()
857 if (fc->async_read) in fuse_readpages_fill()
858 req = fuse_get_req_for_background(fc, nr_alloc); in fuse_readpages_fill()
860 req = fuse_get_req(fc, nr_alloc); in fuse_readpages_fill()
871 fuse_put_request(fc, req); in fuse_readpages_fill()
887 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_readpages() local
898 if (fc->async_read) in fuse_readpages()
899 data.req = fuse_get_req_for_background(fc, nr_alloc); in fuse_readpages()
901 data.req = fuse_get_req(fc, nr_alloc); in fuse_readpages()
912 fuse_put_request(fc, data.req); in fuse_readpages()
921 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_file_read_iter() local
928 if (fc->auto_inval_data || in fuse_file_read_iter()
951 if (ff->fc->minor < 9) in fuse_write_fill()
968 struct fuse_conn *fc = ff->fc; in fuse_send_write() local
979 inarg->lock_owner = fuse_lock_owner_id(fc, owner); in fuse_send_write()
983 return fuse_async_req_send(fc, req, count, io); in fuse_send_write()
985 fuse_request_send(fc, req); in fuse_send_write()
991 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_write_update_size() local
995 spin_lock(&fc->lock); in fuse_write_update_size()
996 fi->attr_version = ++fc->attr_version; in fuse_write_update_size()
1001 spin_unlock(&fc->lock); in fuse_write_update_size()
1045 struct fuse_conn *fc = get_fuse_conn(mapping->host); in fuse_fill_write_pages() local
1060 bytes = min_t(size_t, bytes, fc->max_write - count); in fuse_fill_write_pages()
1097 if (!fc->big_writes) in fuse_fill_write_pages()
1099 } while (iov_iter_count(ii) && count < fc->max_write && in fuse_fill_write_pages()
1118 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_perform_write() local
1134 req = fuse_get_req(fc, nr_pages); in fuse_perform_write()
1158 fuse_put_request(fc, req); in fuse_perform_write()
1335 struct fuse_conn *fc = ff->fc; in fuse_direct_io() local
1336 size_t nmax = write ? fc->max_write : fc->max_read; in fuse_direct_io()
1346 req = fuse_get_req_for_background(fc, fuse_iter_npages(iter)); in fuse_direct_io()
1348 req = fuse_get_req(fc, fuse_iter_npages(iter)); in fuse_direct_io()
1390 fuse_put_request(fc, req); in fuse_direct_io()
1392 req = fuse_get_req_for_background(fc, in fuse_direct_io()
1395 req = fuse_get_req(fc, fuse_iter_npages(iter)); in fuse_direct_io()
1401 fuse_put_request(fc, req); in fuse_direct_io()
1454 static void fuse_writepage_free(struct fuse_conn *fc, struct fuse_req *req) in fuse_writepage_free() argument
1465 static void fuse_writepage_finish(struct fuse_conn *fc, struct fuse_req *req) in fuse_writepage_finish() argument
1482 static void fuse_send_writepage(struct fuse_conn *fc, struct fuse_req *req, in fuse_send_writepage() argument
1484 __releases(fc->lock) in fuse_send_writepage()
1485 __acquires(fc->lock) in fuse_send_writepage()
1491 if (!fc->connected) in fuse_send_writepage()
1505 fuse_request_send_background_locked(fc, req); in fuse_send_writepage()
1509 fuse_writepage_finish(fc, req); in fuse_send_writepage()
1510 spin_unlock(&fc->lock); in fuse_send_writepage()
1511 fuse_writepage_free(fc, req); in fuse_send_writepage()
1512 fuse_put_request(fc, req); in fuse_send_writepage()
1513 spin_lock(&fc->lock); in fuse_send_writepage()
1523 __releases(fc->lock) in fuse_flush_writepages()
1524 __acquires(fc->lock) in fuse_flush_writepages()
1526 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_flush_writepages() local
1534 fuse_send_writepage(fc, req, crop); in fuse_flush_writepages()
1538 static void fuse_writepage_end(struct fuse_conn *fc, struct fuse_req *req) in fuse_writepage_end() argument
1544 spin_lock(&fc->lock); in fuse_writepage_end()
1546 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_writepage_end() local
1577 fuse_send_writepage(fc, next, inarg->offset + inarg->size); in fuse_writepage_end()
1580 fuse_writepage_finish(fc, req); in fuse_writepage_end()
1581 spin_unlock(&fc->lock); in fuse_writepage_end()
1582 fuse_writepage_free(fc, req); in fuse_writepage_end()
1585 static struct fuse_file *__fuse_write_file_get(struct fuse_conn *fc, in __fuse_write_file_get() argument
1590 spin_lock(&fc->lock); in __fuse_write_file_get()
1596 spin_unlock(&fc->lock); in __fuse_write_file_get()
1601 static struct fuse_file *fuse_write_file_get(struct fuse_conn *fc, in fuse_write_file_get() argument
1604 struct fuse_file *ff = __fuse_write_file_get(fc, fi); in fuse_write_file_get()
1611 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_write_inode() local
1616 ff = __fuse_write_file_get(fc, fi); in fuse_write_inode()
1628 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_writepage_locked() local
1647 req->ff = fuse_write_file_get(fc, fi); in fuse_writepage_locked()
1667 spin_lock(&fc->lock); in fuse_writepage_locked()
1671 spin_unlock(&fc->lock); in fuse_writepage_locked()
1720 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_writepages_send() local
1726 spin_lock(&fc->lock); in fuse_writepages_send()
1729 spin_unlock(&fc->lock); in fuse_writepages_send()
1738 struct fuse_conn *fc = get_fuse_conn(new_req->inode); in fuse_writepage_in_flight() local
1747 spin_lock(&fc->lock); in fuse_writepage_in_flight()
1777 spin_unlock(&fc->lock); in fuse_writepage_in_flight()
1782 fuse_writepage_free(fc, new_req); in fuse_writepage_in_flight()
1790 spin_unlock(&fc->lock); in fuse_writepage_in_flight()
1801 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_writepages_fill() local
1808 data->ff = fuse_write_file_get(fc, get_fuse_inode(inode)); in fuse_writepages_fill()
1823 (req->num_pages + 1) * PAGE_SIZE > fc->max_write || in fuse_writepages_fill()
1865 spin_lock(&fc->lock); in fuse_writepages_fill()
1867 spin_unlock(&fc->lock); in fuse_writepages_fill()
1893 spin_lock(&fc->lock); in fuse_writepages_fill()
1895 spin_unlock(&fc->lock); in fuse_writepages_fill()
1949 struct fuse_conn *fc = get_fuse_conn(file_inode(file)); in fuse_write_begin() local
1954 WARN_ON(!fc->writeback_cache); in fuse_write_begin()
2097 static int convert_fuse_file_lock(struct fuse_conn *fc, in convert_fuse_file_lock() argument
2119 fl->fl_pid = pid_nr_ns(find_pid_ns(ffl->pid, fc->pid_ns), &init_pid_ns); in convert_fuse_file_lock()
2135 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_lk_fill() local
2140 inarg->owner = fuse_lock_owner_id(fc, fl->fl_owner); in fuse_lk_fill()
2157 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_getlk() local
2167 err = fuse_simple_request(fc, &args); in fuse_getlk()
2169 err = convert_fuse_file_lock(fc, &outarg.lk, fl); in fuse_getlk()
2177 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_setlk() local
2182 pid_t pid_nr = pid_nr_ns(pid, fc->pid_ns); in fuse_setlk()
2195 err = fuse_simple_request(fc, &args); in fuse_setlk()
2207 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_file_lock() local
2213 if (fc->no_lock) { in fuse_file_lock()
2219 if (fc->no_lock) in fuse_file_lock()
2230 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_file_flock() local
2233 if (fc->no_flock) { in fuse_file_flock()
2249 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_bmap() local
2255 if (!inode->i_sb->s_bdev || fc->no_bmap) in fuse_bmap()
2269 err = fuse_simple_request(fc, &args); in fuse_bmap()
2271 fc->no_bmap = 1; in fuse_bmap()
2279 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_lseek() local
2290 if (fc->no_lseek) in fuse_lseek()
2301 err = fuse_simple_request(fc, &args); in fuse_lseek()
2304 fc->no_lseek = 1; in fuse_lseek()
2403 static int fuse_copy_ioctl_iovec(struct fuse_conn *fc, struct iovec *dst, in fuse_copy_ioctl_iovec() argument
2410 if (fc->minor < 16) { in fuse_copy_ioctl_iovec()
2489 struct fuse_conn *fc = ff->fc; in fuse_do_ioctl() local
2565 req = fuse_get_req(fc, num_pages); in fuse_do_ioctl()
2602 fuse_request_send(fc, req); in fuse_do_ioctl()
2605 fuse_put_request(fc, req); in fuse_do_ioctl()
2633 err = fuse_copy_ioctl_iovec(fc, iov_page, vaddr, in fuse_do_ioctl()
2668 fuse_put_request(fc, req); in fuse_do_ioctl()
2682 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_ioctl_common() local
2684 if (!fuse_allow_current_process(fc)) in fuse_ioctl_common()
2710 static struct rb_node **fuse_find_polled_node(struct fuse_conn *fc, u64 kh, in fuse_find_polled_node() argument
2713 struct rb_node **link = &fc->polled_files.rb_node; in fuse_find_polled_node()
2741 static void fuse_register_polled_file(struct fuse_conn *fc, in fuse_register_polled_file() argument
2744 spin_lock(&fc->lock); in fuse_register_polled_file()
2748 link = fuse_find_polled_node(fc, ff->kh, &parent); in fuse_register_polled_file()
2751 rb_insert_color(&ff->polled_node, &fc->polled_files); in fuse_register_polled_file()
2753 spin_unlock(&fc->lock); in fuse_register_polled_file()
2759 struct fuse_conn *fc = ff->fc; in fuse_file_poll() local
2765 if (fc->no_poll) in fuse_file_poll()
2777 fuse_register_polled_file(fc, ff); in fuse_file_poll()
2788 err = fuse_simple_request(fc, &args); in fuse_file_poll()
2793 fc->no_poll = 1; in fuse_file_poll()
2804 int fuse_notify_poll_wakeup(struct fuse_conn *fc, in fuse_notify_poll_wakeup() argument
2810 spin_lock(&fc->lock); in fuse_notify_poll_wakeup()
2812 link = fuse_find_polled_node(fc, kh, NULL); in fuse_notify_poll_wakeup()
2820 spin_unlock(&fc->lock); in fuse_notify_poll_wakeup()
2850 bool async_dio = ff->fc->async_dio; in fuse_direct_IO()
2944 struct fuse_conn *fc = ff->fc; in fuse_file_fallocate() local
2959 if (fc->no_fallocate) in fuse_file_fallocate()
2983 err = fuse_simple_request(fc, &args); in fuse_file_fallocate()
2985 fc->no_fallocate = 1; in fuse_file_fallocate()
2995 if (changed && fc->writeback_cache) in fuse_file_fallocate()