Lines Matching refs:inode
40 static inline int ext2_add_nondir(struct dentry *dentry, struct inode *inode) in ext2_add_nondir() argument
42 int err = ext2_add_link(dentry, inode); in ext2_add_nondir()
44 d_instantiate_new(dentry, inode); in ext2_add_nondir()
47 inode_dec_link_count(inode); in ext2_add_nondir()
48 discard_new_inode(inode); in ext2_add_nondir()
56 static struct dentry *ext2_lookup(struct inode * dir, struct dentry *dentry, unsigned int flags) in ext2_lookup()
58 struct inode * inode; in ext2_lookup() local
65 inode = NULL; in ext2_lookup()
67 inode = ext2_iget(dir->i_sb, ino); in ext2_lookup()
68 if (inode == ERR_PTR(-ESTALE)) { in ext2_lookup()
75 return d_splice_alias(inode, dentry); in ext2_lookup()
95 static int ext2_create (struct inode * dir, struct dentry * dentry, umode_t mode, bool excl) in ext2_create()
97 struct inode *inode; in ext2_create() local
104 inode = ext2_new_inode(dir, mode, &dentry->d_name); in ext2_create()
105 if (IS_ERR(inode)) in ext2_create()
106 return PTR_ERR(inode); in ext2_create()
108 ext2_set_file_ops(inode); in ext2_create()
109 mark_inode_dirty(inode); in ext2_create()
110 return ext2_add_nondir(dentry, inode); in ext2_create()
113 static int ext2_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode) in ext2_tmpfile()
115 struct inode *inode = ext2_new_inode(dir, mode, NULL); in ext2_tmpfile() local
116 if (IS_ERR(inode)) in ext2_tmpfile()
117 return PTR_ERR(inode); in ext2_tmpfile()
119 ext2_set_file_ops(inode); in ext2_tmpfile()
120 mark_inode_dirty(inode); in ext2_tmpfile()
121 d_tmpfile(dentry, inode); in ext2_tmpfile()
122 unlock_new_inode(inode); in ext2_tmpfile()
126 static int ext2_mknod (struct inode * dir, struct dentry *dentry, umode_t mode, dev_t rdev) in ext2_mknod()
128 struct inode * inode; in ext2_mknod() local
135 inode = ext2_new_inode (dir, mode, &dentry->d_name); in ext2_mknod()
136 err = PTR_ERR(inode); in ext2_mknod()
137 if (!IS_ERR(inode)) { in ext2_mknod()
138 init_special_inode(inode, inode->i_mode, rdev); in ext2_mknod()
140 inode->i_op = &ext2_special_inode_operations; in ext2_mknod()
142 mark_inode_dirty(inode); in ext2_mknod()
143 err = ext2_add_nondir(dentry, inode); in ext2_mknod()
148 static int ext2_symlink (struct inode * dir, struct dentry * dentry, in ext2_symlink()
154 struct inode * inode; in ext2_symlink() local
163 inode = ext2_new_inode (dir, S_IFLNK | S_IRWXUGO, &dentry->d_name); in ext2_symlink()
164 err = PTR_ERR(inode); in ext2_symlink()
165 if (IS_ERR(inode)) in ext2_symlink()
168 if (l > sizeof (EXT2_I(inode)->i_data)) { in ext2_symlink()
170 inode->i_op = &ext2_symlink_inode_operations; in ext2_symlink()
171 inode_nohighmem(inode); in ext2_symlink()
172 if (test_opt(inode->i_sb, NOBH)) in ext2_symlink()
173 inode->i_mapping->a_ops = &ext2_nobh_aops; in ext2_symlink()
175 inode->i_mapping->a_ops = &ext2_aops; in ext2_symlink()
176 err = page_symlink(inode, symname, l); in ext2_symlink()
181 inode->i_op = &ext2_fast_symlink_inode_operations; in ext2_symlink()
182 inode->i_link = (char*)EXT2_I(inode)->i_data; in ext2_symlink()
183 memcpy(inode->i_link, symname, l); in ext2_symlink()
184 inode->i_size = l-1; in ext2_symlink()
186 mark_inode_dirty(inode); in ext2_symlink()
188 err = ext2_add_nondir(dentry, inode); in ext2_symlink()
193 inode_dec_link_count(inode); in ext2_symlink()
194 discard_new_inode(inode); in ext2_symlink()
198 static int ext2_link (struct dentry * old_dentry, struct inode * dir, in ext2_link()
201 struct inode *inode = d_inode(old_dentry); in ext2_link() local
208 inode->i_ctime = current_time(inode); in ext2_link()
209 inode_inc_link_count(inode); in ext2_link()
210 ihold(inode); in ext2_link()
212 err = ext2_add_link(dentry, inode); in ext2_link()
214 d_instantiate(dentry, inode); in ext2_link()
217 inode_dec_link_count(inode); in ext2_link()
218 iput(inode); in ext2_link()
222 static int ext2_mkdir(struct inode * dir, struct dentry * dentry, umode_t mode) in ext2_mkdir()
224 struct inode * inode; in ext2_mkdir() local
233 inode = ext2_new_inode(dir, S_IFDIR | mode, &dentry->d_name); in ext2_mkdir()
234 err = PTR_ERR(inode); in ext2_mkdir()
235 if (IS_ERR(inode)) in ext2_mkdir()
238 inode->i_op = &ext2_dir_inode_operations; in ext2_mkdir()
239 inode->i_fop = &ext2_dir_operations; in ext2_mkdir()
240 if (test_opt(inode->i_sb, NOBH)) in ext2_mkdir()
241 inode->i_mapping->a_ops = &ext2_nobh_aops; in ext2_mkdir()
243 inode->i_mapping->a_ops = &ext2_aops; in ext2_mkdir()
245 inode_inc_link_count(inode); in ext2_mkdir()
247 err = ext2_make_empty(inode, dir); in ext2_mkdir()
251 err = ext2_add_link(dentry, inode); in ext2_mkdir()
255 d_instantiate_new(dentry, inode); in ext2_mkdir()
260 inode_dec_link_count(inode); in ext2_mkdir()
261 inode_dec_link_count(inode); in ext2_mkdir()
262 discard_new_inode(inode); in ext2_mkdir()
268 static int ext2_unlink(struct inode * dir, struct dentry *dentry) in ext2_unlink()
270 struct inode * inode = d_inode(dentry); in ext2_unlink() local
289 inode->i_ctime = dir->i_ctime; in ext2_unlink()
290 inode_dec_link_count(inode); in ext2_unlink()
296 static int ext2_rmdir (struct inode * dir, struct dentry *dentry) in ext2_rmdir()
298 struct inode * inode = d_inode(dentry); in ext2_rmdir() local
301 if (ext2_empty_dir(inode)) { in ext2_rmdir()
304 inode->i_size = 0; in ext2_rmdir()
305 inode_dec_link_count(inode); in ext2_rmdir()
312 static int ext2_rename (struct inode * old_dir, struct dentry * old_dentry, in ext2_rename()
313 struct inode * new_dir, struct dentry * new_dentry, in ext2_rename()
316 struct inode * old_inode = d_inode(old_dentry); in ext2_rename()
317 struct inode * new_inode = d_inode(new_dentry); in ext2_rename()