Lines Matching refs:inode

53 static void logfs_inode_setops(struct inode *inode)  in logfs_inode_setops()  argument
55 switch (inode->i_mode & S_IFMT) { in logfs_inode_setops()
57 inode->i_op = &logfs_dir_iops; in logfs_inode_setops()
58 inode->i_fop = &logfs_dir_fops; in logfs_inode_setops()
59 inode->i_mapping->a_ops = &logfs_reg_aops; in logfs_inode_setops()
62 inode->i_op = &logfs_reg_iops; in logfs_inode_setops()
63 inode->i_fop = &logfs_reg_fops; in logfs_inode_setops()
64 inode->i_mapping->a_ops = &logfs_reg_aops; in logfs_inode_setops()
67 inode->i_op = &logfs_symlink_iops; in logfs_inode_setops()
68 inode->i_mapping->a_ops = &logfs_reg_aops; in logfs_inode_setops()
74 init_special_inode(inode, inode->i_mode, inode->i_rdev); in logfs_inode_setops()
81 static struct inode *__logfs_iget(struct super_block *sb, ino_t ino) in __logfs_iget()
83 struct inode *inode = iget_locked(sb, ino); in __logfs_iget() local
86 if (!inode) in __logfs_iget()
88 if (!(inode->i_state & I_NEW)) in __logfs_iget()
89 return inode; in __logfs_iget()
91 err = logfs_read_inode(inode); in __logfs_iget()
92 if (err || inode->i_nlink == 0) { in __logfs_iget()
96 clear_nlink(inode); in __logfs_iget()
97 logfs_inode(inode)->li_flags |= LOGFS_IF_ZOMBIE; in __logfs_iget()
98 iget_failed(inode); in __logfs_iget()
104 logfs_inode_setops(inode); in __logfs_iget()
105 unlock_new_inode(inode); in __logfs_iget()
106 return inode; in __logfs_iget()
109 struct inode *logfs_iget(struct super_block *sb, ino_t ino) in logfs_iget()
120 struct inode *logfs_safe_iget(struct super_block *sb, ino_t ino, int *is_cached) in logfs_safe_iget()
146 struct inode *inode = container_of(head, struct inode, i_rcu); in logfs_i_callback() local
147 kmem_cache_free(logfs_inode_cache, logfs_inode(inode)); in logfs_i_callback()
150 static void __logfs_destroy_inode(struct inode *inode) in __logfs_destroy_inode() argument
152 struct logfs_inode *li = logfs_inode(inode); in __logfs_destroy_inode()
156 call_rcu(&inode->i_rcu, logfs_i_callback); in __logfs_destroy_inode()
159 static void __logfs_destroy_meta_inode(struct inode *inode) in __logfs_destroy_meta_inode() argument
161 struct logfs_inode *li = logfs_inode(inode); in __logfs_destroy_meta_inode()
163 call_rcu(&inode->i_rcu, logfs_i_callback); in __logfs_destroy_meta_inode()
166 static void logfs_destroy_inode(struct inode *inode) in logfs_destroy_inode() argument
168 struct logfs_inode *li = logfs_inode(inode); in logfs_destroy_inode()
170 if (inode->i_ino < LOGFS_RESERVED_INOS) { in logfs_destroy_inode()
175 __logfs_destroy_meta_inode(inode); in logfs_destroy_inode()
183 __logfs_destroy_inode(inode); in logfs_destroy_inode()
187 void logfs_safe_iput(struct inode *inode, int is_cached) in logfs_safe_iput() argument
189 if (inode->i_ino == LOGFS_INO_MASTER) in logfs_safe_iput()
191 if (inode->i_ino == LOGFS_INO_SEGFILE) in logfs_safe_iput()
195 logfs_destroy_inode(inode); in logfs_safe_iput()
199 iput(inode); in logfs_safe_iput()
202 static void logfs_init_inode(struct super_block *sb, struct inode *inode) in logfs_init_inode() argument
204 struct logfs_inode *li = logfs_inode(inode); in logfs_init_inode()
211 i_uid_write(inode, 0); in logfs_init_inode()
212 i_gid_write(inode, 0); in logfs_init_inode()
213 inode->i_size = 0; in logfs_init_inode()
214 inode->i_blocks = 0; in logfs_init_inode()
215 inode->i_ctime = CURRENT_TIME; in logfs_init_inode()
216 inode->i_mtime = CURRENT_TIME; in logfs_init_inode()
226 static struct inode *logfs_alloc_inode(struct super_block *sb) in logfs_alloc_inode()
262 struct inode *logfs_new_meta_inode(struct super_block *sb, u64 ino) in logfs_new_meta_inode()
264 struct inode *inode; in logfs_new_meta_inode() local
266 inode = new_inode(sb); in logfs_new_meta_inode()
267 if (!inode) in logfs_new_meta_inode()
270 inode->i_mode = S_IFREG; in logfs_new_meta_inode()
271 inode->i_ino = ino; in logfs_new_meta_inode()
272 inode->i_data.a_ops = &logfs_reg_aops; in logfs_new_meta_inode()
273 mapping_set_gfp_mask(&inode->i_data, GFP_NOFS); in logfs_new_meta_inode()
275 return inode; in logfs_new_meta_inode()
278 struct inode *logfs_read_meta_inode(struct super_block *sb, u64 ino) in logfs_read_meta_inode()
280 struct inode *inode; in logfs_read_meta_inode() local
283 inode = logfs_new_meta_inode(sb, ino); in logfs_read_meta_inode()
284 if (IS_ERR(inode)) in logfs_read_meta_inode()
285 return inode; in logfs_read_meta_inode()
287 err = logfs_read_inode(inode); in logfs_read_meta_inode()
289 iput(inode); in logfs_read_meta_inode()
292 logfs_inode_setops(inode); in logfs_read_meta_inode()
293 return inode; in logfs_read_meta_inode()
296 static int logfs_write_inode(struct inode *inode, struct writeback_control *wbc) in logfs_write_inode() argument
302 if (logfs_inode(inode)->li_flags & LOGFS_IF_STILLBORN) in logfs_write_inode()
305 ret = __logfs_write_inode(inode, NULL, flags); in logfs_write_inode()
306 LOGFS_BUG_ON(ret, inode->i_sb); in logfs_write_inode()
311 static int logfs_drop_inode(struct inode *inode) in logfs_drop_inode() argument
313 struct logfs_super *super = logfs_super(inode->i_sb); in logfs_drop_inode()
314 struct logfs_inode *li = logfs_inode(inode); in logfs_drop_inode()
319 return generic_drop_inode(inode); in logfs_drop_inode()
323 struct inode *inode) in logfs_set_ino_generation() argument
337 inode->i_ino = ino; in logfs_set_ino_generation()
338 inode->i_generation = super->s_generation; in logfs_set_ino_generation()
342 struct inode *logfs_new_inode(struct inode *dir, umode_t mode) in logfs_new_inode()
345 struct inode *inode; in logfs_new_inode() local
347 inode = new_inode(sb); in logfs_new_inode()
348 if (!inode) in logfs_new_inode()
351 logfs_init_inode(sb, inode); in logfs_new_inode()
354 logfs_inode(inode)->li_flags |= in logfs_new_inode()
357 inode->i_mode = mode; in logfs_new_inode()
358 logfs_set_ino_generation(sb, inode); in logfs_new_inode()
360 inode_init_owner(inode, dir, mode); in logfs_new_inode()
361 logfs_inode_setops(inode); in logfs_new_inode()
362 insert_inode_hash(inode); in logfs_new_inode()
364 return inode; in logfs_new_inode()