Lines Matching refs:inode

79 static struct inode *fuse_alloc_inode(struct super_block *sb)  in fuse_alloc_inode()
81 struct inode *inode; in fuse_alloc_inode() local
84 inode = kmem_cache_alloc(fuse_inode_cachep, GFP_KERNEL); in fuse_alloc_inode()
85 if (!inode) in fuse_alloc_inode()
88 fi = get_fuse_inode(inode); in fuse_alloc_inode()
102 kmem_cache_free(fuse_inode_cachep, inode); in fuse_alloc_inode()
106 return inode; in fuse_alloc_inode()
111 struct inode *inode = container_of(head, struct inode, i_rcu); in fuse_i_callback() local
112 kmem_cache_free(fuse_inode_cachep, inode); in fuse_i_callback()
115 static void fuse_destroy_inode(struct inode *inode) in fuse_destroy_inode() argument
117 struct fuse_inode *fi = get_fuse_inode(inode); in fuse_destroy_inode()
121 call_rcu(&inode->i_rcu, fuse_i_callback); in fuse_destroy_inode()
124 static void fuse_evict_inode(struct inode *inode) in fuse_evict_inode() argument
126 truncate_inode_pages_final(&inode->i_data); in fuse_evict_inode()
127 clear_inode(inode); in fuse_evict_inode()
128 if (inode->i_sb->s_flags & MS_ACTIVE) { in fuse_evict_inode()
129 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_evict_inode()
130 struct fuse_inode *fi = get_fuse_inode(inode); in fuse_evict_inode()
157 void fuse_change_attributes_common(struct inode *inode, struct fuse_attr *attr, in fuse_change_attributes_common() argument
160 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_change_attributes_common()
161 struct fuse_inode *fi = get_fuse_inode(inode); in fuse_change_attributes_common()
166 inode->i_ino = fuse_squash_ino(attr->ino); in fuse_change_attributes_common()
167 inode->i_mode = (inode->i_mode & S_IFMT) | (attr->mode & 07777); in fuse_change_attributes_common()
168 set_nlink(inode, attr->nlink); in fuse_change_attributes_common()
169 inode->i_uid = make_kuid(&init_user_ns, attr->uid); in fuse_change_attributes_common()
170 inode->i_gid = make_kgid(&init_user_ns, attr->gid); in fuse_change_attributes_common()
171 inode->i_blocks = attr->blocks; in fuse_change_attributes_common()
172 inode->i_atime.tv_sec = attr->atime; in fuse_change_attributes_common()
173 inode->i_atime.tv_nsec = attr->atimensec; in fuse_change_attributes_common()
175 if (!fc->writeback_cache || !S_ISREG(inode->i_mode)) { in fuse_change_attributes_common()
176 inode->i_mtime.tv_sec = attr->mtime; in fuse_change_attributes_common()
177 inode->i_mtime.tv_nsec = attr->mtimensec; in fuse_change_attributes_common()
178 inode->i_ctime.tv_sec = attr->ctime; in fuse_change_attributes_common()
179 inode->i_ctime.tv_nsec = attr->ctimensec; in fuse_change_attributes_common()
183 inode->i_blkbits = ilog2(attr->blksize); in fuse_change_attributes_common()
185 inode->i_blkbits = inode->i_sb->s_blocksize_bits; in fuse_change_attributes_common()
192 fi->orig_i_mode = inode->i_mode; in fuse_change_attributes_common()
194 inode->i_mode &= ~S_ISVTX; in fuse_change_attributes_common()
199 void fuse_change_attributes(struct inode *inode, struct fuse_attr *attr, in fuse_change_attributes() argument
202 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_change_attributes()
203 struct fuse_inode *fi = get_fuse_inode(inode); in fuse_change_attributes()
215 old_mtime = inode->i_mtime; in fuse_change_attributes()
216 fuse_change_attributes_common(inode, attr, attr_valid); in fuse_change_attributes()
218 oldsize = inode->i_size; in fuse_change_attributes()
224 if (!is_wb || !S_ISREG(inode->i_mode)) in fuse_change_attributes()
225 i_size_write(inode, attr->size); in fuse_change_attributes()
228 if (!is_wb && S_ISREG(inode->i_mode)) { in fuse_change_attributes()
232 truncate_pagecache(inode, attr->size); in fuse_change_attributes()
249 invalidate_inode_pages2(inode->i_mapping); in fuse_change_attributes()
253 static void fuse_init_inode(struct inode *inode, struct fuse_attr *attr) in fuse_init_inode() argument
255 inode->i_mode = attr->mode & S_IFMT; in fuse_init_inode()
256 inode->i_size = attr->size; in fuse_init_inode()
257 inode->i_mtime.tv_sec = attr->mtime; in fuse_init_inode()
258 inode->i_mtime.tv_nsec = attr->mtimensec; in fuse_init_inode()
259 inode->i_ctime.tv_sec = attr->ctime; in fuse_init_inode()
260 inode->i_ctime.tv_nsec = attr->ctimensec; in fuse_init_inode()
261 if (S_ISREG(inode->i_mode)) { in fuse_init_inode()
262 fuse_init_common(inode); in fuse_init_inode()
263 fuse_init_file_inode(inode); in fuse_init_inode()
264 } else if (S_ISDIR(inode->i_mode)) in fuse_init_inode()
265 fuse_init_dir(inode); in fuse_init_inode()
266 else if (S_ISLNK(inode->i_mode)) in fuse_init_inode()
267 fuse_init_symlink(inode); in fuse_init_inode()
268 else if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode) || in fuse_init_inode()
269 S_ISFIFO(inode->i_mode) || S_ISSOCK(inode->i_mode)) { in fuse_init_inode()
270 fuse_init_common(inode); in fuse_init_inode()
271 init_special_inode(inode, inode->i_mode, in fuse_init_inode()
277 int fuse_inode_eq(struct inode *inode, void *_nodeidp) in fuse_inode_eq() argument
280 if (get_node_id(inode) == nodeid) in fuse_inode_eq()
286 static int fuse_inode_set(struct inode *inode, void *_nodeidp) in fuse_inode_set() argument
289 get_fuse_inode(inode)->nodeid = nodeid; in fuse_inode_set()
293 struct inode *fuse_iget(struct super_block *sb, u64 nodeid, in fuse_iget()
297 struct inode *inode; in fuse_iget() local
302 inode = iget5_locked(sb, nodeid, fuse_inode_eq, fuse_inode_set, &nodeid); in fuse_iget()
303 if (!inode) in fuse_iget()
306 if ((inode->i_state & I_NEW)) { in fuse_iget()
307 inode->i_flags |= S_NOATIME; in fuse_iget()
309 inode->i_flags |= S_NOCMTIME; in fuse_iget()
310 inode->i_generation = generation; in fuse_iget()
311 fuse_init_inode(inode, attr); in fuse_iget()
312 unlock_new_inode(inode); in fuse_iget()
313 } else if ((inode->i_mode ^ attr->mode) & S_IFMT) { in fuse_iget()
315 make_bad_inode(inode); in fuse_iget()
316 iput(inode); in fuse_iget()
320 fi = get_fuse_inode(inode); in fuse_iget()
324 fuse_change_attributes(inode, attr, attr_valid, attr_version); in fuse_iget()
326 return inode; in fuse_iget()
332 struct inode *inode; in fuse_reverse_inval_inode() local
336 inode = ilookup5(sb, nodeid, fuse_inode_eq, &nodeid); in fuse_reverse_inval_inode()
337 if (!inode) in fuse_reverse_inval_inode()
340 fuse_invalidate_attr(inode); in fuse_reverse_inval_inode()
347 invalidate_inode_pages2_range(inode->i_mapping, in fuse_reverse_inval_inode()
350 iput(inode); in fuse_reverse_inval_inode()
616 static struct inode *fuse_get_root_inode(struct super_block *sb, unsigned mode) in fuse_get_root_inode()
636 struct inode *inode; in fuse_get_dentry() local
643 inode = ilookup5(sb, handle->nodeid, fuse_inode_eq, &handle->nodeid); in fuse_get_dentry()
644 if (!inode) { in fuse_get_dentry()
654 &inode); in fuse_get_dentry()
657 if (err || !inode) { in fuse_get_dentry()
662 if (get_node_id(inode) != handle->nodeid) in fuse_get_dentry()
666 if (inode->i_generation != handle->generation) in fuse_get_dentry()
669 entry = d_obtain_alias(inode); in fuse_get_dentry()
670 if (!IS_ERR(entry) && get_node_id(inode) != FUSE_ROOT_ID) in fuse_get_dentry()
676 iput(inode); in fuse_get_dentry()
681 static int fuse_encode_fh(struct inode *inode, u32 *fh, int *max_len, in fuse_encode_fh() argument
682 struct inode *parent) in fuse_encode_fh()
693 nodeid = get_fuse_inode(inode)->nodeid; in fuse_encode_fh()
694 generation = inode->i_generation; in fuse_encode_fh()
743 struct inode *child_inode = d_inode(child); in fuse_get_parent()
745 struct inode *inode; in fuse_get_parent() local
757 &name, &outarg, &inode); in fuse_get_parent()
764 parent = d_obtain_alias(inode); in fuse_get_parent()
765 if (!IS_ERR(parent) && get_node_id(inode) != FUSE_ROOT_ID) in fuse_get_parent()
981 struct inode *root; in fuse_fill_super()
1192 struct inode *inode = foo; in fuse_inode_init_once() local
1194 inode_init_once(inode); in fuse_inode_init_once()