Lines Matching refs:inode
36 static inline int exofs_add_nondir(struct dentry *dentry, struct inode *inode) in exofs_add_nondir() argument
38 int err = exofs_add_link(dentry, inode); in exofs_add_nondir()
40 d_instantiate(dentry, inode); in exofs_add_nondir()
43 inode_dec_link_count(inode); in exofs_add_nondir()
44 iput(inode); in exofs_add_nondir()
48 static struct dentry *exofs_lookup(struct inode *dir, struct dentry *dentry, in exofs_lookup()
51 struct inode *inode; in exofs_lookup() local
58 inode = ino ? exofs_iget(dir->i_sb, ino) : NULL; in exofs_lookup()
59 return d_splice_alias(inode, dentry); in exofs_lookup()
62 static int exofs_create(struct inode *dir, struct dentry *dentry, umode_t mode, in exofs_create()
65 struct inode *inode = exofs_new_inode(dir, mode); in exofs_create() local
66 int err = PTR_ERR(inode); in exofs_create()
67 if (!IS_ERR(inode)) { in exofs_create()
68 inode->i_op = &exofs_file_inode_operations; in exofs_create()
69 inode->i_fop = &exofs_file_operations; in exofs_create()
70 inode->i_mapping->a_ops = &exofs_aops; in exofs_create()
71 mark_inode_dirty(inode); in exofs_create()
72 err = exofs_add_nondir(dentry, inode); in exofs_create()
77 static int exofs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, in exofs_mknod()
80 struct inode *inode; in exofs_mknod() local
83 inode = exofs_new_inode(dir, mode); in exofs_mknod()
84 err = PTR_ERR(inode); in exofs_mknod()
85 if (!IS_ERR(inode)) { in exofs_mknod()
86 init_special_inode(inode, inode->i_mode, rdev); in exofs_mknod()
87 mark_inode_dirty(inode); in exofs_mknod()
88 err = exofs_add_nondir(dentry, inode); in exofs_mknod()
93 static int exofs_symlink(struct inode *dir, struct dentry *dentry, in exofs_symlink()
99 struct inode *inode; in exofs_symlink() local
105 inode = exofs_new_inode(dir, S_IFLNK | S_IRWXUGO); in exofs_symlink()
106 err = PTR_ERR(inode); in exofs_symlink()
107 if (IS_ERR(inode)) in exofs_symlink()
110 oi = exofs_i(inode); in exofs_symlink()
113 inode->i_op = &page_symlink_inode_operations; in exofs_symlink()
114 inode->i_mapping->a_ops = &exofs_aops; in exofs_symlink()
117 err = page_symlink(inode, symname, l); in exofs_symlink()
122 inode->i_op = &simple_symlink_inode_operations; in exofs_symlink()
123 inode->i_link = (char *)oi->i_data; in exofs_symlink()
125 inode->i_size = l-1; in exofs_symlink()
127 mark_inode_dirty(inode); in exofs_symlink()
129 err = exofs_add_nondir(dentry, inode); in exofs_symlink()
134 inode_dec_link_count(inode); in exofs_symlink()
135 iput(inode); in exofs_symlink()
139 static int exofs_link(struct dentry *old_dentry, struct inode *dir, in exofs_link()
142 struct inode *inode = d_inode(old_dentry); in exofs_link() local
144 inode->i_ctime = CURRENT_TIME; in exofs_link()
145 inode_inc_link_count(inode); in exofs_link()
146 ihold(inode); in exofs_link()
148 return exofs_add_nondir(dentry, inode); in exofs_link()
151 static int exofs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) in exofs_mkdir()
153 struct inode *inode; in exofs_mkdir() local
158 inode = exofs_new_inode(dir, S_IFDIR | mode); in exofs_mkdir()
159 err = PTR_ERR(inode); in exofs_mkdir()
160 if (IS_ERR(inode)) in exofs_mkdir()
163 inode->i_op = &exofs_dir_inode_operations; in exofs_mkdir()
164 inode->i_fop = &exofs_dir_operations; in exofs_mkdir()
165 inode->i_mapping->a_ops = &exofs_aops; in exofs_mkdir()
167 inode_inc_link_count(inode); in exofs_mkdir()
169 err = exofs_make_empty(inode, dir); in exofs_mkdir()
173 err = exofs_add_link(dentry, inode); in exofs_mkdir()
177 d_instantiate(dentry, inode); in exofs_mkdir()
182 inode_dec_link_count(inode); in exofs_mkdir()
183 inode_dec_link_count(inode); in exofs_mkdir()
184 iput(inode); in exofs_mkdir()
190 static int exofs_unlink(struct inode *dir, struct dentry *dentry) in exofs_unlink()
192 struct inode *inode = d_inode(dentry); in exofs_unlink() local
205 inode->i_ctime = dir->i_ctime; in exofs_unlink()
206 inode_dec_link_count(inode); in exofs_unlink()
212 static int exofs_rmdir(struct inode *dir, struct dentry *dentry) in exofs_rmdir()
214 struct inode *inode = d_inode(dentry); in exofs_rmdir() local
217 if (exofs_empty_dir(inode)) { in exofs_rmdir()
220 inode->i_size = 0; in exofs_rmdir()
221 inode_dec_link_count(inode); in exofs_rmdir()
228 static int exofs_rename(struct inode *old_dir, struct dentry *old_dentry, in exofs_rename()
229 struct inode *new_dir, struct dentry *new_dentry) in exofs_rename()
231 struct inode *old_inode = d_inode(old_dentry); in exofs_rename()
232 struct inode *new_inode = d_inode(new_dentry); in exofs_rename()