Lines Matching refs:inode
39 static inline int ext2_add_nondir(struct dentry *dentry, struct inode *inode) in ext2_add_nondir() argument
41 int err = ext2_add_link(dentry, inode); in ext2_add_nondir()
43 unlock_new_inode(inode); in ext2_add_nondir()
44 d_instantiate(dentry, inode); in ext2_add_nondir()
47 inode_dec_link_count(inode); in ext2_add_nondir()
48 unlock_new_inode(inode); in ext2_add_nondir()
49 iput(inode); in ext2_add_nondir()
57 static struct dentry *ext2_lookup(struct inode * dir, struct dentry *dentry, unsigned int flags) in ext2_lookup()
59 struct inode * inode; in ext2_lookup() local
66 inode = NULL; in ext2_lookup()
68 inode = ext2_iget(dir->i_sb, ino); in ext2_lookup()
69 if (inode == ERR_PTR(-ESTALE)) { in ext2_lookup()
76 return d_splice_alias(inode, dentry); in ext2_lookup()
96 static int ext2_create (struct inode * dir, struct dentry * dentry, umode_t mode, bool excl) in ext2_create()
98 struct inode *inode; in ext2_create() local
105 inode = ext2_new_inode(dir, mode, &dentry->d_name); in ext2_create()
106 if (IS_ERR(inode)) in ext2_create()
107 return PTR_ERR(inode); in ext2_create()
109 inode->i_op = &ext2_file_inode_operations; in ext2_create()
110 if (test_opt(inode->i_sb, NOBH)) { in ext2_create()
111 inode->i_mapping->a_ops = &ext2_nobh_aops; in ext2_create()
112 inode->i_fop = &ext2_file_operations; in ext2_create()
114 inode->i_mapping->a_ops = &ext2_aops; in ext2_create()
115 inode->i_fop = &ext2_file_operations; in ext2_create()
117 mark_inode_dirty(inode); in ext2_create()
118 return ext2_add_nondir(dentry, inode); in ext2_create()
121 static int ext2_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode) in ext2_tmpfile()
123 struct inode *inode = ext2_new_inode(dir, mode, NULL); in ext2_tmpfile() local
124 if (IS_ERR(inode)) in ext2_tmpfile()
125 return PTR_ERR(inode); in ext2_tmpfile()
127 inode->i_op = &ext2_file_inode_operations; in ext2_tmpfile()
128 if (test_opt(inode->i_sb, NOBH)) { in ext2_tmpfile()
129 inode->i_mapping->a_ops = &ext2_nobh_aops; in ext2_tmpfile()
130 inode->i_fop = &ext2_file_operations; in ext2_tmpfile()
132 inode->i_mapping->a_ops = &ext2_aops; in ext2_tmpfile()
133 inode->i_fop = &ext2_file_operations; in ext2_tmpfile()
135 mark_inode_dirty(inode); in ext2_tmpfile()
136 d_tmpfile(dentry, inode); in ext2_tmpfile()
137 unlock_new_inode(inode); in ext2_tmpfile()
141 static int ext2_mknod (struct inode * dir, struct dentry *dentry, umode_t mode, dev_t rdev) in ext2_mknod()
143 struct inode * inode; in ext2_mknod() local
150 inode = ext2_new_inode (dir, mode, &dentry->d_name); in ext2_mknod()
151 err = PTR_ERR(inode); in ext2_mknod()
152 if (!IS_ERR(inode)) { in ext2_mknod()
153 init_special_inode(inode, inode->i_mode, rdev); in ext2_mknod()
155 inode->i_op = &ext2_special_inode_operations; in ext2_mknod()
157 mark_inode_dirty(inode); in ext2_mknod()
158 err = ext2_add_nondir(dentry, inode); in ext2_mknod()
163 static int ext2_symlink (struct inode * dir, struct dentry * dentry, in ext2_symlink()
169 struct inode * inode; in ext2_symlink() local
178 inode = ext2_new_inode (dir, S_IFLNK | S_IRWXUGO, &dentry->d_name); in ext2_symlink()
179 err = PTR_ERR(inode); in ext2_symlink()
180 if (IS_ERR(inode)) in ext2_symlink()
183 if (l > sizeof (EXT2_I(inode)->i_data)) { in ext2_symlink()
185 inode->i_op = &ext2_symlink_inode_operations; in ext2_symlink()
186 if (test_opt(inode->i_sb, NOBH)) in ext2_symlink()
187 inode->i_mapping->a_ops = &ext2_nobh_aops; in ext2_symlink()
189 inode->i_mapping->a_ops = &ext2_aops; in ext2_symlink()
190 err = page_symlink(inode, symname, l); in ext2_symlink()
195 inode->i_op = &ext2_fast_symlink_inode_operations; in ext2_symlink()
196 inode->i_link = (char*)EXT2_I(inode)->i_data; in ext2_symlink()
197 memcpy(inode->i_link, symname, l); in ext2_symlink()
198 inode->i_size = l-1; in ext2_symlink()
200 mark_inode_dirty(inode); in ext2_symlink()
202 err = ext2_add_nondir(dentry, inode); in ext2_symlink()
207 inode_dec_link_count(inode); in ext2_symlink()
208 unlock_new_inode(inode); in ext2_symlink()
209 iput (inode); in ext2_symlink()
213 static int ext2_link (struct dentry * old_dentry, struct inode * dir, in ext2_link()
216 struct inode *inode = d_inode(old_dentry); in ext2_link() local
223 inode->i_ctime = CURRENT_TIME_SEC; in ext2_link()
224 inode_inc_link_count(inode); in ext2_link()
225 ihold(inode); in ext2_link()
227 err = ext2_add_link(dentry, inode); in ext2_link()
229 d_instantiate(dentry, inode); in ext2_link()
232 inode_dec_link_count(inode); in ext2_link()
233 iput(inode); in ext2_link()
237 static int ext2_mkdir(struct inode * dir, struct dentry * dentry, umode_t mode) in ext2_mkdir()
239 struct inode * inode; in ext2_mkdir() local
248 inode = ext2_new_inode(dir, S_IFDIR | mode, &dentry->d_name); in ext2_mkdir()
249 err = PTR_ERR(inode); in ext2_mkdir()
250 if (IS_ERR(inode)) in ext2_mkdir()
253 inode->i_op = &ext2_dir_inode_operations; in ext2_mkdir()
254 inode->i_fop = &ext2_dir_operations; in ext2_mkdir()
255 if (test_opt(inode->i_sb, NOBH)) in ext2_mkdir()
256 inode->i_mapping->a_ops = &ext2_nobh_aops; in ext2_mkdir()
258 inode->i_mapping->a_ops = &ext2_aops; in ext2_mkdir()
260 inode_inc_link_count(inode); in ext2_mkdir()
262 err = ext2_make_empty(inode, dir); in ext2_mkdir()
266 err = ext2_add_link(dentry, inode); in ext2_mkdir()
270 unlock_new_inode(inode); in ext2_mkdir()
271 d_instantiate(dentry, inode); in ext2_mkdir()
276 inode_dec_link_count(inode); in ext2_mkdir()
277 inode_dec_link_count(inode); in ext2_mkdir()
278 unlock_new_inode(inode); in ext2_mkdir()
279 iput(inode); in ext2_mkdir()
285 static int ext2_unlink(struct inode * dir, struct dentry *dentry) in ext2_unlink()
287 struct inode * inode = d_inode(dentry); in ext2_unlink() local
306 inode->i_ctime = dir->i_ctime; in ext2_unlink()
307 inode_dec_link_count(inode); in ext2_unlink()
313 static int ext2_rmdir (struct inode * dir, struct dentry *dentry) in ext2_rmdir()
315 struct inode * inode = d_inode(dentry); in ext2_rmdir() local
318 if (ext2_empty_dir(inode)) { in ext2_rmdir()
321 inode->i_size = 0; in ext2_rmdir()
322 inode_dec_link_count(inode); in ext2_rmdir()
329 static int ext2_rename (struct inode * old_dir, struct dentry * old_dentry, in ext2_rename()
330 struct inode * new_dir, struct dentry * new_dentry ) in ext2_rename()
332 struct inode * old_inode = d_inode(old_dentry); in ext2_rename()
333 struct inode * new_inode = d_inode(new_dentry); in ext2_rename()