Lines Matching refs:fc

127 		struct fuse_conn *fc = get_fuse_conn(inode);  in fuse_evict_inode()  local
132 fuse_queue_forget(fc, fi->forget, fi->nodeid, in fuse_evict_inode()
169 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_change_attributes_common() local
174 fi->attr_version = atomic64_inc_return(&fc->attr_version); in fuse_change_attributes_common()
181 inode->i_uid = make_kuid(fc->user_ns, attr->uid); in fuse_change_attributes_common()
182 inode->i_gid = make_kgid(fc->user_ns, attr->gid); in fuse_change_attributes_common()
207 if (!fc->default_permissions) in fuse_change_attributes_common()
225 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_get_cache_mask() local
227 if (!fc->writeback_cache || !S_ISREG(inode->i_mode)) in fuse_get_cache_mask()
236 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_change_attributes() local
285 if (!fc->explicit_inval_data) in fuse_change_attributes()
287 } else if (fc->auto_inval_data) { in fuse_change_attributes()
352 struct fuse_conn *fc = get_fuse_conn_super(sb); in fuse_iget() local
361 if (fc->auto_submounts && (attr->flags & FUSE_ATTR_SUBMOUNT) && in fuse_iget()
380 if (!fc->writeback_cache || !S_ISREG(attr->mode)) in fuse_iget()
401 struct inode *fuse_ilookup(struct fuse_conn *fc, u64 nodeid, in fuse_ilookup() argument
407 WARN_ON(!rwsem_is_locked(&fc->killsb)); in fuse_ilookup()
408 list_for_each_entry(fm_iter, &fc->mounts, fc_entry) { in fuse_ilookup()
423 int fuse_reverse_inval_inode(struct fuse_conn *fc, u64 nodeid, in fuse_reverse_inval_inode() argument
431 inode = fuse_ilookup(fc, nodeid, NULL); in fuse_reverse_inval_inode()
437 fi->attr_version = atomic64_inc_return(&fc->attr_version); in fuse_reverse_inval_inode()
475 struct fuse_conn *fc = get_fuse_conn_super(sb); in fuse_umount_begin() local
477 if (!fc->no_force_umount) in fuse_umount_begin()
478 fuse_abort_conn(fc); in fuse_umount_begin()
483 if (fm->fc->conn_init) { in fuse_send_destroy()
515 if (!fuse_allow_current_process(fm->fc)) { in fuse_statfs()
546 static void fuse_sync_fs_writes(struct fuse_conn *fc) in fuse_sync_fs_writes() argument
552 spin_lock(&fc->lock); in fuse_sync_fs_writes()
553 bucket = rcu_dereference_protected(fc->curr_bucket, 1); in fuse_sync_fs_writes()
558 spin_unlock(&fc->lock); in fuse_sync_fs_writes()
568 rcu_assign_pointer(fc->curr_bucket, new_bucket); in fuse_sync_fs_writes()
569 spin_unlock(&fc->lock); in fuse_sync_fs_writes()
587 struct fuse_conn *fc = fm->fc; in fuse_sync_fs() local
603 if (!fc->sync_fs) in fuse_sync_fs()
606 fuse_sync_fs_writes(fc); in fuse_sync_fs()
618 fc->sync_fs = 0; in fuse_sync_fs()
753 struct fuse_conn *fc = get_fuse_conn_super(sb); in fuse_show_options() local
755 if (fc->legacy_opts_show) { in fuse_show_options()
757 from_kuid_munged(fc->user_ns, fc->user_id)); in fuse_show_options()
759 from_kgid_munged(fc->user_ns, fc->group_id)); in fuse_show_options()
760 if (fc->default_permissions) in fuse_show_options()
762 if (fc->allow_other) in fuse_show_options()
764 if (fc->max_read != ~0) in fuse_show_options()
765 seq_printf(m, ",max_read=%u", fc->max_read); in fuse_show_options()
770 if (fc->dax) in fuse_show_options()
803 void fuse_conn_init(struct fuse_conn *fc, struct fuse_mount *fm, in fuse_conn_init() argument
807 memset(fc, 0, sizeof(*fc)); in fuse_conn_init()
808 spin_lock_init(&fc->lock); in fuse_conn_init()
809 spin_lock_init(&fc->bg_lock); in fuse_conn_init()
810 init_rwsem(&fc->killsb); in fuse_conn_init()
811 refcount_set(&fc->count, 1); in fuse_conn_init()
812 atomic_set(&fc->dev_count, 1); in fuse_conn_init()
813 init_waitqueue_head(&fc->blocked_waitq); in fuse_conn_init()
814 fuse_iqueue_init(&fc->iq, fiq_ops, fiq_priv); in fuse_conn_init()
815 INIT_LIST_HEAD(&fc->bg_queue); in fuse_conn_init()
816 INIT_LIST_HEAD(&fc->entry); in fuse_conn_init()
817 INIT_LIST_HEAD(&fc->devices); in fuse_conn_init()
818 atomic_set(&fc->num_waiting, 0); in fuse_conn_init()
819 fc->max_background = FUSE_DEFAULT_MAX_BACKGROUND; in fuse_conn_init()
820 fc->congestion_threshold = FUSE_DEFAULT_CONGESTION_THRESHOLD; in fuse_conn_init()
821 atomic64_set(&fc->khctr, 0); in fuse_conn_init()
822 fc->polled_files = RB_ROOT; in fuse_conn_init()
823 fc->blocked = 0; in fuse_conn_init()
824 fc->initialized = 0; in fuse_conn_init()
825 fc->connected = 1; in fuse_conn_init()
826 atomic64_set(&fc->attr_version, 1); in fuse_conn_init()
827 get_random_bytes(&fc->scramble_key, sizeof(fc->scramble_key)); in fuse_conn_init()
828 fc->pid_ns = get_pid_ns(task_active_pid_ns(current)); in fuse_conn_init()
829 fc->user_ns = get_user_ns(user_ns); in fuse_conn_init()
830 fc->max_pages = FUSE_DEFAULT_MAX_PAGES_PER_REQ; in fuse_conn_init()
831 fc->max_pages_limit = FUSE_MAX_MAX_PAGES; in fuse_conn_init()
833 INIT_LIST_HEAD(&fc->mounts); in fuse_conn_init()
834 list_add(&fm->fc_entry, &fc->mounts); in fuse_conn_init()
835 fm->fc = fc; in fuse_conn_init()
839 void fuse_conn_put(struct fuse_conn *fc) in fuse_conn_put() argument
841 if (refcount_dec_and_test(&fc->count)) { in fuse_conn_put()
842 struct fuse_iqueue *fiq = &fc->iq; in fuse_conn_put()
846 fuse_dax_conn_free(fc); in fuse_conn_put()
849 put_pid_ns(fc->pid_ns); in fuse_conn_put()
850 put_user_ns(fc->user_ns); in fuse_conn_put()
851 bucket = rcu_dereference_protected(fc->curr_bucket, 1); in fuse_conn_put()
856 fc->release(fc); in fuse_conn_put()
861 struct fuse_conn *fuse_conn_get(struct fuse_conn *fc) in fuse_conn_get() argument
863 refcount_inc(&fc->count); in fuse_conn_get()
864 return fc; in fuse_conn_get()
887 struct fuse_conn *fc = get_fuse_conn_super(sb); in fuse_get_dentry() local
900 if (!fc->export_support) in fuse_get_dentry()
994 struct fuse_conn *fc = get_fuse_conn(child_inode); in fuse_get_parent() local
1000 if (!fc->export_support) in fuse_get_parent()
1063 static void process_init_limits(struct fuse_conn *fc, struct fuse_init_out *arg) in process_init_limits() argument
1073 spin_lock(&fc->bg_lock); in process_init_limits()
1075 fc->max_background = arg->max_background; in process_init_limits()
1077 if (!cap_sys_admin && fc->max_background > max_user_bgreq) in process_init_limits()
1078 fc->max_background = max_user_bgreq; in process_init_limits()
1081 fc->congestion_threshold = arg->congestion_threshold; in process_init_limits()
1084 fc->congestion_threshold > max_user_congthresh) in process_init_limits()
1085 fc->congestion_threshold = max_user_congthresh; in process_init_limits()
1087 spin_unlock(&fc->bg_lock); in process_init_limits()
1099 struct fuse_conn *fc = fm->fc; in process_init_reply() local
1109 process_init_limits(fc, arg); in process_init_reply()
1114 fc->async_read = 1; in process_init_reply()
1116 fc->no_lock = 1; in process_init_reply()
1119 fc->no_flock = 1; in process_init_reply()
1122 fc->no_flock = 1; in process_init_reply()
1125 fc->atomic_o_trunc = 1; in process_init_reply()
1129 fc->export_support = 1; in process_init_reply()
1132 fc->big_writes = 1; in process_init_reply()
1134 fc->dont_mask = 1; in process_init_reply()
1136 fc->auto_inval_data = 1; in process_init_reply()
1138 fc->explicit_inval_data = 1; in process_init_reply()
1140 fc->do_readdirplus = 1; in process_init_reply()
1142 fc->readdirplus_auto = 1; in process_init_reply()
1145 fc->async_dio = 1; in process_init_reply()
1147 fc->writeback_cache = 1; in process_init_reply()
1149 fc->parallel_dirops = 1; in process_init_reply()
1151 fc->handle_killpriv = 1; in process_init_reply()
1155 fc->default_permissions = 1; in process_init_reply()
1156 fc->posix_acl = 1; in process_init_reply()
1160 fc->cache_symlinks = 1; in process_init_reply()
1162 fc->abort_err = 1; in process_init_reply()
1164 fc->max_pages = in process_init_reply()
1165 min_t(unsigned int, fc->max_pages_limit, in process_init_reply()
1170 !fuse_dax_check_alignment(fc, arg->map_alignment)) { in process_init_reply()
1174 fc->handle_killpriv_v2 = 1; in process_init_reply()
1178 fc->setxattr_ext = 1; in process_init_reply()
1180 ra_pages = fc->max_read / PAGE_SIZE; in process_init_reply()
1181 fc->no_lock = 1; in process_init_reply()
1182 fc->no_flock = 1; in process_init_reply()
1187 fc->minor = arg->minor; in process_init_reply()
1188 fc->max_write = arg->minor < 5 ? 4096 : arg->max_write; in process_init_reply()
1189 fc->max_write = max_t(unsigned, 4096, fc->max_write); in process_init_reply()
1190 fc->conn_init = 1; in process_init_reply()
1195 fc->conn_init = 0; in process_init_reply()
1196 fc->conn_error = 1; in process_init_reply()
1199 fuse_set_initialized(fc); in process_init_reply()
1200 wake_up_all(&fc->blocked_waitq); in process_init_reply()
1224 if (fm->fc->dax) in fuse_send_init()
1227 if (fm->fc->auto_submounts) in fuse_send_init()
1250 void fuse_free_conn(struct fuse_conn *fc) in fuse_free_conn() argument
1252 WARN_ON(!list_empty(&fc->devices)); in fuse_free_conn()
1253 kfree_rcu(fc, rcu); in fuse_free_conn()
1257 static int fuse_bdi_init(struct fuse_conn *fc, struct super_block *sb) in fuse_bdi_init() argument
1271 err = super_setup_bdi_name(sb, "%u:%u%s", MAJOR(fc->dev), in fuse_bdi_init()
1272 MINOR(fc->dev), suffix); in fuse_bdi_init()
1319 void fuse_dev_install(struct fuse_dev *fud, struct fuse_conn *fc) in fuse_dev_install() argument
1321 fud->fc = fuse_conn_get(fc); in fuse_dev_install()
1322 spin_lock(&fc->lock); in fuse_dev_install()
1323 list_add_tail(&fud->entry, &fc->devices); in fuse_dev_install()
1324 spin_unlock(&fc->lock); in fuse_dev_install()
1328 struct fuse_dev *fuse_dev_alloc_install(struct fuse_conn *fc) in fuse_dev_alloc_install() argument
1336 fuse_dev_install(fud, fc); in fuse_dev_alloc_install()
1343 struct fuse_conn *fc = fud->fc; in fuse_dev_free() local
1345 if (fc) { in fuse_dev_free()
1346 spin_lock(&fc->lock); in fuse_dev_free()
1348 spin_unlock(&fc->lock); in fuse_dev_free()
1350 fuse_conn_put(fc); in fuse_dev_free()
1443 struct fuse_conn *fc = get_fuse_conn(&mp_fi->inode); in fuse_get_tree_submount() local
1451 fm->fc = fuse_conn_get(fc); in fuse_get_tree_submount()
1466 down_write(&fc->killsb); in fuse_get_tree_submount()
1467 list_add_tail(&fm->fc_entry, &fc->mounts); in fuse_get_tree_submount()
1468 up_write(&fc->killsb); in fuse_get_tree_submount()
1491 struct fuse_conn *fc = fm->fc; in fuse_fill_super_common() local
1500 rcu_assign_pointer(fc->curr_bucket, fuse_sync_bucket_alloc()); in fuse_fill_super_common()
1517 err = fuse_dax_conn_alloc(fc, ctx->dax_dev); in fuse_fill_super_common()
1524 fud = fuse_dev_alloc_install(fc); in fuse_fill_super_common()
1529 fc->dev = sb->s_dev; in fuse_fill_super_common()
1531 err = fuse_bdi_init(fc, sb); in fuse_fill_super_common()
1537 fc->dont_mask = 1; in fuse_fill_super_common()
1540 fc->default_permissions = ctx->default_permissions; in fuse_fill_super_common()
1541 fc->allow_other = ctx->allow_other; in fuse_fill_super_common()
1542 fc->user_id = ctx->user_id; in fuse_fill_super_common()
1543 fc->group_id = ctx->group_id; in fuse_fill_super_common()
1544 fc->legacy_opts_show = ctx->legacy_opts_show; in fuse_fill_super_common()
1545 fc->max_read = max_t(unsigned int, 4096, ctx->max_read); in fuse_fill_super_common()
1546 fc->destroy = ctx->destroy; in fuse_fill_super_common()
1547 fc->no_control = ctx->no_control; in fuse_fill_super_common()
1548 fc->no_force_umount = ctx->no_force_umount; in fuse_fill_super_common()
1564 err = fuse_ctl_add_conn(fc); in fuse_fill_super_common()
1568 list_add_tail(&fc->entry, &fuse_conn_list); in fuse_fill_super_common()
1583 fuse_dax_conn_free(fc); in fuse_fill_super_common()
1635 struct fuse_conn *fc; in fuse_get_tree() local
1640 fc = kmalloc(sizeof(*fc), GFP_KERNEL); in fuse_get_tree()
1641 if (!fc) in fuse_get_tree()
1646 kfree(fc); in fuse_get_tree()
1650 fuse_conn_init(fc, fm, fsc->user_ns, &fuse_dev_fiq_ops, NULL); in fuse_get_tree()
1651 fc->release = fuse_free_conn; in fuse_get_tree()
1676 fsc->sget_key = fud->fc; in fuse_get_tree()
1728 struct fuse_conn *fc = fm->fc; in fuse_mount_remove() local
1731 down_write(&fc->killsb); in fuse_mount_remove()
1733 if (list_empty(&fc->mounts)) in fuse_mount_remove()
1735 up_write(&fc->killsb); in fuse_mount_remove()
1743 struct fuse_conn *fc = fm->fc; in fuse_conn_destroy() local
1745 if (fc->destroy) in fuse_conn_destroy()
1748 fuse_abort_conn(fc); in fuse_conn_destroy()
1749 fuse_wait_aborted(fc); in fuse_conn_destroy()
1751 if (!list_empty(&fc->entry)) { in fuse_conn_destroy()
1753 list_del(&fc->entry); in fuse_conn_destroy()
1754 fuse_ctl_remove_conn(fc); in fuse_conn_destroy()
1774 fuse_conn_put(fm->fc); in fuse_mount_destroy()