Lines Matching refs:fc
23 static int fuse_send_open(struct fuse_conn *fc, u64 nodeid, struct file *file, in fuse_send_open() argument
31 if (!fc->atomic_o_trunc) in fuse_send_open()
42 return fuse_simple_request(fc, &args); in fuse_send_open()
45 struct fuse_file *fuse_file_alloc(struct fuse_conn *fc) in fuse_file_alloc() argument
53 ff->fc = fc; in fuse_file_alloc()
65 spin_lock(&fc->lock); in fuse_file_alloc()
66 ff->kh = ++fc->khctr; in fuse_file_alloc()
67 spin_unlock(&fc->lock); in fuse_file_alloc()
84 static void fuse_release_end(struct fuse_conn *fc, struct fuse_req *req) in fuse_release_end() argument
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()
116 int fuse_do_open(struct fuse_conn *fc, u64 nodeid, struct file *file, in fuse_do_open() argument
122 ff = fuse_file_alloc(fc); in fuse_do_open()
128 if (!fc->no_open || isdir) { in fuse_do_open()
132 err = fuse_send_open(fc, nodeid, file, opcode, &outarg); in fuse_do_open()
141 fc->no_open = 1; in fuse_do_open()
158 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_link_write_file() local
165 spin_lock(&fc->lock); in fuse_link_write_file()
168 spin_unlock(&fc->lock); in fuse_link_write_file()
174 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_finish_open() local
182 if (fc->atomic_o_trunc && (file->f_flags & O_TRUNC)) { in fuse_finish_open()
185 spin_lock(&fc->lock); in fuse_finish_open()
186 fi->attr_version = ++fc->attr_version; in fuse_finish_open()
188 spin_unlock(&fc->lock); in fuse_finish_open()
190 if (fc->writeback_cache) in fuse_finish_open()
193 if ((file->f_mode & FMODE_WRITE) && fc->writeback_cache) in fuse_finish_open()
199 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_open_common() local
202 fc->atomic_o_trunc && in fuse_open_common()
203 fc->writeback_cache; in fuse_open_common()
212 err = fuse_do_open(fc, get_node_id(inode), file, isdir); in fuse_open_common()
225 struct fuse_conn *fc = ff->fc; in fuse_prepare_release() local
229 spin_lock(&fc->lock); in fuse_prepare_release()
232 rb_erase(&ff->polled_node, &fc->polled_files); in fuse_prepare_release()
233 spin_unlock(&fc->lock); in fuse_prepare_release()
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()
286 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_release() local
289 if (fc->writeback_cache) in fuse_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()
314 u64 fuse_lock_owner_id(struct fuse_conn *fc, fl_owner_t id) in fuse_lock_owner_id() argument
316 u32 *k = fc->scramble_key; in fuse_lock_owner_id()
341 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_range_is_writeback() local
346 spin_lock(&fc->lock); in fuse_range_is_writeback()
358 spin_unlock(&fc->lock); in fuse_range_is_writeback()
400 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_flush() local
409 if (fc->no_flush) in fuse_flush()
420 req = fuse_get_req_nofail_nopages(fc, file); in fuse_flush()
423 inarg.lock_owner = fuse_lock_owner_id(fc, id); in fuse_flush()
430 fuse_request_send(fc, req); in fuse_flush()
432 fuse_put_request(fc, req); in fuse_flush()
434 fc->no_flush = 1; in fuse_flush()
444 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_fsync_common() local
469 if ((!isdir && fc->no_fsync) || (isdir && fc->no_fsyncdir)) in fuse_fsync_common()
480 err = fuse_simple_request(fc, &args); in fuse_fsync_common()
483 fc->no_fsyncdir = 1; in fuse_fsync_common()
485 fc->no_fsync = 1; in fuse_fsync_common()
584 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_aio_complete() local
587 spin_lock(&fc->lock); in fuse_aio_complete()
588 fi->attr_version = ++fc->attr_version; in fuse_aio_complete()
589 spin_unlock(&fc->lock); in fuse_aio_complete()
598 static void fuse_aio_complete_req(struct fuse_conn *fc, struct fuse_req *req) in fuse_aio_complete_req() argument
618 static size_t fuse_async_req_send(struct fuse_conn *fc, struct fuse_req *req, in fuse_async_req_send() argument
631 fuse_request_send_background(fc, req); in fuse_async_req_send()
641 struct fuse_conn *fc = ff->fc; in fuse_send_read() local
648 inarg->lock_owner = fuse_lock_owner_id(fc, owner); in fuse_send_read()
652 return fuse_async_req_send(fc, req, count, io); in fuse_send_read()
654 fuse_request_send(fc, req); in fuse_send_read()
661 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_read_update_size() local
664 spin_lock(&fc->lock); in fuse_read_update_size()
667 fi->attr_version = ++fc->attr_version; in fuse_read_update_size()
670 spin_unlock(&fc->lock); in fuse_read_update_size()
677 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_short_read() local
679 if (fc->writeback_cache) { in fuse_short_read()
703 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_do_readpage() local
718 req = fuse_get_req(fc, 1); in fuse_do_readpage()
722 attr_ver = fuse_get_attr_version(fc); in fuse_do_readpage()
742 fuse_put_request(fc, req); in fuse_do_readpage()
763 static void fuse_readpages_end(struct fuse_conn *fc, struct fuse_req *req) in fuse_readpages_end() argument
801 struct fuse_conn *fc = ff->fc; in fuse_send_readpages() local
809 req->misc.read.attr_ver = fuse_get_attr_version(fc); in fuse_send_readpages()
810 if (fc->async_read) { in fuse_send_readpages()
813 fuse_request_send_background(fc, req); in fuse_send_readpages()
815 fuse_request_send(fc, req); in fuse_send_readpages()
816 fuse_readpages_end(fc, req); in fuse_send_readpages()
817 fuse_put_request(fc, req); in fuse_send_readpages()
833 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_readpages_fill() local
839 (req->num_pages + 1) * PAGE_CACHE_SIZE > fc->max_read || in fuse_readpages_fill()
844 if (fc->async_read) in fuse_readpages_fill()
845 req = fuse_get_req_for_background(fc, nr_alloc); in fuse_readpages_fill()
847 req = fuse_get_req(fc, nr_alloc); in fuse_readpages_fill()
857 fuse_put_request(fc, req); in fuse_readpages_fill()
873 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_readpages() local
884 if (fc->async_read) in fuse_readpages()
885 data.req = fuse_get_req_for_background(fc, nr_alloc); in fuse_readpages()
887 data.req = fuse_get_req(fc, nr_alloc); in fuse_readpages()
898 fuse_put_request(fc, data.req); in fuse_readpages()
907 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_file_read_iter() local
914 if (fc->auto_inval_data || in fuse_file_read_iter()
937 if (ff->fc->minor < 9) in fuse_write_fill()
953 struct fuse_conn *fc = ff->fc; in fuse_send_write() local
960 inarg->lock_owner = fuse_lock_owner_id(fc, owner); in fuse_send_write()
964 return fuse_async_req_send(fc, req, count, io); in fuse_send_write()
966 fuse_request_send(fc, req); in fuse_send_write()
972 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_write_update_size() local
976 spin_lock(&fc->lock); in fuse_write_update_size()
977 fi->attr_version = ++fc->attr_version; in fuse_write_update_size()
982 spin_unlock(&fc->lock); in fuse_write_update_size()
1026 struct fuse_conn *fc = get_fuse_conn(mapping->host); in fuse_fill_write_pages() local
1041 bytes = min_t(size_t, bytes, fc->max_write - count); in fuse_fill_write_pages()
1078 if (!fc->big_writes) in fuse_fill_write_pages()
1080 } while (iov_iter_count(ii) && count < fc->max_write && in fuse_fill_write_pages()
1099 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_perform_write() local
1115 req = fuse_get_req(fc, nr_pages); in fuse_perform_write()
1139 fuse_put_request(fc, req); in fuse_perform_write()
1314 struct fuse_conn *fc = ff->fc; in fuse_direct_io() local
1315 size_t nmax = write ? fc->max_write : fc->max_read; in fuse_direct_io()
1324 req = fuse_get_req_for_background(fc, fuse_iter_npages(iter)); in fuse_direct_io()
1326 req = fuse_get_req(fc, fuse_iter_npages(iter)); in fuse_direct_io()
1369 fuse_put_request(fc, req); in fuse_direct_io()
1371 req = fuse_get_req_for_background(fc, in fuse_direct_io()
1374 req = fuse_get_req(fc, fuse_iter_npages(iter)); in fuse_direct_io()
1380 fuse_put_request(fc, req); in fuse_direct_io()
1435 static void fuse_writepage_free(struct fuse_conn *fc, struct fuse_req *req) in fuse_writepage_free() argument
1446 static void fuse_writepage_finish(struct fuse_conn *fc, struct fuse_req *req) in fuse_writepage_finish() argument
1463 static void fuse_send_writepage(struct fuse_conn *fc, struct fuse_req *req, in fuse_send_writepage() argument
1465 __releases(fc->lock) in fuse_send_writepage()
1466 __acquires(fc->lock) in fuse_send_writepage()
1472 if (!fc->connected) in fuse_send_writepage()
1486 fuse_request_send_background_locked(fc, req); in fuse_send_writepage()
1490 fuse_writepage_finish(fc, req); in fuse_send_writepage()
1491 spin_unlock(&fc->lock); in fuse_send_writepage()
1492 fuse_writepage_free(fc, req); in fuse_send_writepage()
1493 fuse_put_request(fc, req); in fuse_send_writepage()
1494 spin_lock(&fc->lock); in fuse_send_writepage()
1504 __releases(fc->lock) in fuse_flush_writepages()
1505 __acquires(fc->lock) in fuse_flush_writepages()
1507 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_flush_writepages() local
1515 fuse_send_writepage(fc, req, crop); in fuse_flush_writepages()
1519 static void fuse_writepage_end(struct fuse_conn *fc, struct fuse_req *req) in fuse_writepage_end() argument
1525 spin_lock(&fc->lock); in fuse_writepage_end()
1527 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_writepage_end() local
1558 fuse_send_writepage(fc, next, inarg->offset + inarg->size); in fuse_writepage_end()
1561 fuse_writepage_finish(fc, req); in fuse_writepage_end()
1562 spin_unlock(&fc->lock); in fuse_writepage_end()
1563 fuse_writepage_free(fc, req); in fuse_writepage_end()
1566 static struct fuse_file *__fuse_write_file_get(struct fuse_conn *fc, in __fuse_write_file_get() argument
1571 spin_lock(&fc->lock); in __fuse_write_file_get()
1577 spin_unlock(&fc->lock); in __fuse_write_file_get()
1582 static struct fuse_file *fuse_write_file_get(struct fuse_conn *fc, in fuse_write_file_get() argument
1585 struct fuse_file *ff = __fuse_write_file_get(fc, fi); in fuse_write_file_get()
1592 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_write_inode() local
1597 ff = __fuse_write_file_get(fc, fi); in fuse_write_inode()
1609 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_writepage_locked() local
1628 req->ff = fuse_write_file_get(fc, fi); in fuse_writepage_locked()
1648 spin_lock(&fc->lock); in fuse_writepage_locked()
1652 spin_unlock(&fc->lock); in fuse_writepage_locked()
1700 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_writepages_send() local
1706 spin_lock(&fc->lock); in fuse_writepages_send()
1709 spin_unlock(&fc->lock); in fuse_writepages_send()
1718 struct fuse_conn *fc = get_fuse_conn(new_req->inode); in fuse_writepage_in_flight() local
1727 spin_lock(&fc->lock); in fuse_writepage_in_flight()
1757 spin_unlock(&fc->lock); in fuse_writepage_in_flight()
1762 fuse_writepage_free(fc, new_req); in fuse_writepage_in_flight()
1770 spin_unlock(&fc->lock); in fuse_writepage_in_flight()
1781 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_writepages_fill() local
1788 data->ff = fuse_write_file_get(fc, get_fuse_inode(inode)); in fuse_writepages_fill()
1803 (req->num_pages + 1) * PAGE_CACHE_SIZE > fc->max_write || in fuse_writepages_fill()
1845 spin_lock(&fc->lock); in fuse_writepages_fill()
1847 spin_unlock(&fc->lock); in fuse_writepages_fill()
1873 spin_lock(&fc->lock); in fuse_writepages_fill()
1875 spin_unlock(&fc->lock); in fuse_writepages_fill()
1929 struct fuse_conn *fc = get_fuse_conn(file_inode(file)); in fuse_write_begin() local
1934 WARN_ON(!fc->writeback_cache); in fuse_write_begin()
2101 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_lk_fill() local
2106 inarg->owner = fuse_lock_owner_id(fc, fl->fl_owner); in fuse_lk_fill()
2123 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_getlk() local
2133 err = fuse_simple_request(fc, &args); in fuse_getlk()
2143 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_setlk() local
2160 err = fuse_simple_request(fc, &args); in fuse_setlk()
2172 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_file_lock() local
2178 if (fc->no_lock) { in fuse_file_lock()
2184 if (fc->no_lock) in fuse_file_lock()
2195 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_file_flock() local
2198 if (fc->no_flock) { in fuse_file_flock()
2214 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_bmap() local
2220 if (!inode->i_sb->s_bdev || fc->no_bmap) in fuse_bmap()
2234 err = fuse_simple_request(fc, &args); in fuse_bmap()
2236 fc->no_bmap = 1; in fuse_bmap()
2354 static int fuse_copy_ioctl_iovec(struct fuse_conn *fc, struct iovec *dst, in fuse_copy_ioctl_iovec() argument
2361 if (fc->minor < 16) { in fuse_copy_ioctl_iovec()
2440 struct fuse_conn *fc = ff->fc; in fuse_do_ioctl() local
2515 req = fuse_get_req(fc, num_pages); in fuse_do_ioctl()
2549 fuse_request_send(fc, req); in fuse_do_ioctl()
2552 fuse_put_request(fc, req); in fuse_do_ioctl()
2580 err = fuse_copy_ioctl_iovec(fc, iov_page, vaddr, in fuse_do_ioctl()
2608 fuse_put_request(fc, req); in fuse_do_ioctl()
2622 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_ioctl_common() local
2624 if (!fuse_allow_current_process(fc)) in fuse_ioctl_common()
2650 static struct rb_node **fuse_find_polled_node(struct fuse_conn *fc, u64 kh, in fuse_find_polled_node() argument
2653 struct rb_node **link = &fc->polled_files.rb_node; in fuse_find_polled_node()
2681 static void fuse_register_polled_file(struct fuse_conn *fc, in fuse_register_polled_file() argument
2684 spin_lock(&fc->lock); in fuse_register_polled_file()
2688 link = fuse_find_polled_node(fc, ff->kh, &parent); in fuse_register_polled_file()
2691 rb_insert_color(&ff->polled_node, &fc->polled_files); in fuse_register_polled_file()
2693 spin_unlock(&fc->lock); in fuse_register_polled_file()
2699 struct fuse_conn *fc = ff->fc; in fuse_file_poll() local
2705 if (fc->no_poll) in fuse_file_poll()
2717 fuse_register_polled_file(fc, ff); in fuse_file_poll()
2728 err = fuse_simple_request(fc, &args); in fuse_file_poll()
2733 fc->no_poll = 1; in fuse_file_poll()
2744 int fuse_notify_poll_wakeup(struct fuse_conn *fc, in fuse_notify_poll_wakeup() argument
2750 spin_lock(&fc->lock); in fuse_notify_poll_wakeup()
2752 link = fuse_find_polled_node(fc, kh, NULL); in fuse_notify_poll_wakeup()
2760 spin_unlock(&fc->lock); in fuse_notify_poll_wakeup()
2790 bool async_dio = ff->fc->async_dio; in fuse_direct_IO()
2886 struct fuse_conn *fc = ff->fc; in fuse_file_fallocate() local
2901 if (fc->no_fallocate) in fuse_file_fallocate()
2925 err = fuse_simple_request(fc, &args); in fuse_file_fallocate()
2927 fc->no_fallocate = 1; in fuse_file_fallocate()
2937 if (changed && fc->writeback_cache) in fuse_file_fallocate()