Lines Matching refs:inode
49 static inline int nilfs_add_nondir(struct dentry *dentry, struct inode *inode) in nilfs_add_nondir() argument
51 int err = nilfs_add_link(dentry, inode); in nilfs_add_nondir()
53 d_instantiate_new(dentry, inode); in nilfs_add_nondir()
56 inode_dec_link_count(inode); in nilfs_add_nondir()
57 unlock_new_inode(inode); in nilfs_add_nondir()
58 iput(inode); in nilfs_add_nondir()
67 nilfs_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags) in nilfs_lookup()
69 struct inode *inode; in nilfs_lookup() local
76 inode = ino ? nilfs_iget(dir->i_sb, NILFS_I(dir)->i_root, ino) : NULL; in nilfs_lookup()
77 return d_splice_alias(inode, dentry); in nilfs_lookup()
88 static int nilfs_create(struct inode *dir, struct dentry *dentry, umode_t mode, in nilfs_create()
91 struct inode *inode; in nilfs_create() local
98 inode = nilfs_new_inode(dir, mode); in nilfs_create()
99 err = PTR_ERR(inode); in nilfs_create()
100 if (!IS_ERR(inode)) { in nilfs_create()
101 inode->i_op = &nilfs_file_inode_operations; in nilfs_create()
102 inode->i_fop = &nilfs_file_operations; in nilfs_create()
103 inode->i_mapping->a_ops = &nilfs_aops; in nilfs_create()
104 nilfs_mark_inode_dirty(inode); in nilfs_create()
105 err = nilfs_add_nondir(dentry, inode); in nilfs_create()
116 nilfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t rdev) in nilfs_mknod()
118 struct inode *inode; in nilfs_mknod() local
125 inode = nilfs_new_inode(dir, mode); in nilfs_mknod()
126 err = PTR_ERR(inode); in nilfs_mknod()
127 if (!IS_ERR(inode)) { in nilfs_mknod()
128 init_special_inode(inode, inode->i_mode, rdev); in nilfs_mknod()
129 nilfs_mark_inode_dirty(inode); in nilfs_mknod()
130 err = nilfs_add_nondir(dentry, inode); in nilfs_mknod()
140 static int nilfs_symlink(struct inode *dir, struct dentry *dentry, in nilfs_symlink()
146 struct inode *inode; in nilfs_symlink() local
156 inode = nilfs_new_inode(dir, S_IFLNK | S_IRWXUGO); in nilfs_symlink()
157 err = PTR_ERR(inode); in nilfs_symlink()
158 if (IS_ERR(inode)) in nilfs_symlink()
162 inode->i_op = &nilfs_symlink_inode_operations; in nilfs_symlink()
163 inode->i_mapping->a_ops = &nilfs_aops; in nilfs_symlink()
164 err = page_symlink(inode, symname, l); in nilfs_symlink()
171 err = nilfs_add_nondir(dentry, inode); in nilfs_symlink()
181 drop_nlink(inode); in nilfs_symlink()
182 nilfs_mark_inode_dirty(inode); in nilfs_symlink()
183 unlock_new_inode(inode); in nilfs_symlink()
184 iput(inode); in nilfs_symlink()
188 static int nilfs_link(struct dentry *old_dentry, struct inode *dir, in nilfs_link()
191 struct inode *inode = d_inode(old_dentry); in nilfs_link() local
199 inode->i_ctime = CURRENT_TIME; in nilfs_link()
200 inode_inc_link_count(inode); in nilfs_link()
201 ihold(inode); in nilfs_link()
203 err = nilfs_add_link(dentry, inode); in nilfs_link()
205 d_instantiate(dentry, inode); in nilfs_link()
208 inode_dec_link_count(inode); in nilfs_link()
209 iput(inode); in nilfs_link()
216 static int nilfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) in nilfs_mkdir()
218 struct inode *inode; in nilfs_mkdir() local
228 inode = nilfs_new_inode(dir, S_IFDIR | mode); in nilfs_mkdir()
229 err = PTR_ERR(inode); in nilfs_mkdir()
230 if (IS_ERR(inode)) in nilfs_mkdir()
233 inode->i_op = &nilfs_dir_inode_operations; in nilfs_mkdir()
234 inode->i_fop = &nilfs_dir_operations; in nilfs_mkdir()
235 inode->i_mapping->a_ops = &nilfs_aops; in nilfs_mkdir()
237 inc_nlink(inode); in nilfs_mkdir()
239 err = nilfs_make_empty(inode, dir); in nilfs_mkdir()
243 err = nilfs_add_link(dentry, inode); in nilfs_mkdir()
247 nilfs_mark_inode_dirty(inode); in nilfs_mkdir()
248 d_instantiate_new(dentry, inode); in nilfs_mkdir()
258 drop_nlink(inode); in nilfs_mkdir()
259 drop_nlink(inode); in nilfs_mkdir()
260 nilfs_mark_inode_dirty(inode); in nilfs_mkdir()
261 unlock_new_inode(inode); in nilfs_mkdir()
262 iput(inode); in nilfs_mkdir()
269 static int nilfs_do_unlink(struct inode *dir, struct dentry *dentry) in nilfs_do_unlink()
271 struct inode *inode; in nilfs_do_unlink() local
281 inode = d_inode(dentry); in nilfs_do_unlink()
283 if (le64_to_cpu(de->inode) != inode->i_ino) in nilfs_do_unlink()
286 if (!inode->i_nlink) { in nilfs_do_unlink()
287 nilfs_warning(inode->i_sb, __func__, in nilfs_do_unlink()
289 inode->i_ino, inode->i_nlink); in nilfs_do_unlink()
290 set_nlink(inode, 1); in nilfs_do_unlink()
296 inode->i_ctime = dir->i_ctime; in nilfs_do_unlink()
297 drop_nlink(inode); in nilfs_do_unlink()
303 static int nilfs_unlink(struct inode *dir, struct dentry *dentry) in nilfs_unlink()
324 static int nilfs_rmdir(struct inode *dir, struct dentry *dentry) in nilfs_rmdir()
326 struct inode *inode = d_inode(dentry); in nilfs_rmdir() local
335 if (nilfs_empty_dir(inode)) { in nilfs_rmdir()
338 inode->i_size = 0; in nilfs_rmdir()
339 drop_nlink(inode); in nilfs_rmdir()
340 nilfs_mark_inode_dirty(inode); in nilfs_rmdir()
353 static int nilfs_rename(struct inode *old_dir, struct dentry *old_dentry, in nilfs_rename()
354 struct inode *new_dir, struct dentry *new_dentry) in nilfs_rename()
356 struct inode *old_inode = d_inode(old_dentry); in nilfs_rename()
357 struct inode *new_inode = d_inode(new_dentry); in nilfs_rename()
447 struct inode *inode; in nilfs_get_parent() local
457 inode = nilfs_iget(d_inode(child)->i_sb, root, ino); in nilfs_get_parent()
458 if (IS_ERR(inode)) in nilfs_get_parent()
459 return ERR_CAST(inode); in nilfs_get_parent()
461 return d_obtain_alias(inode); in nilfs_get_parent()
468 struct inode *inode; in nilfs_get_dentry() local
477 inode = nilfs_iget(sb, root, ino); in nilfs_get_dentry()
480 if (IS_ERR(inode)) in nilfs_get_dentry()
481 return ERR_CAST(inode); in nilfs_get_dentry()
482 if (gen && inode->i_generation != gen) { in nilfs_get_dentry()
483 iput(inode); in nilfs_get_dentry()
486 return d_obtain_alias(inode); in nilfs_get_dentry()
514 static int nilfs_encode_fh(struct inode *inode, __u32 *fh, int *lenp, in nilfs_encode_fh() argument
515 struct inode *parent) in nilfs_encode_fh()
518 struct nilfs_root *root = NILFS_I(inode)->i_root; in nilfs_encode_fh()
531 fid->ino = inode->i_ino; in nilfs_encode_fh()
532 fid->gen = inode->i_generation; in nilfs_encode_fh()