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
86 inode = exofs_new_inode(dir, mode); in exofs_mknod()
87 err = PTR_ERR(inode); in exofs_mknod()
88 if (!IS_ERR(inode)) { in exofs_mknod()
89 init_special_inode(inode, inode->i_mode, rdev); in exofs_mknod()
90 mark_inode_dirty(inode); in exofs_mknod()
91 err = exofs_add_nondir(dentry, inode); in exofs_mknod()
96 static int exofs_symlink(struct inode *dir, struct dentry *dentry, in exofs_symlink()
102 struct inode *inode; in exofs_symlink() local
108 inode = exofs_new_inode(dir, S_IFLNK | S_IRWXUGO); in exofs_symlink()
109 err = PTR_ERR(inode); in exofs_symlink()
110 if (IS_ERR(inode)) in exofs_symlink()
113 oi = exofs_i(inode); in exofs_symlink()
116 inode->i_op = &exofs_symlink_inode_operations; in exofs_symlink()
117 inode->i_mapping->a_ops = &exofs_aops; in exofs_symlink()
120 err = page_symlink(inode, symname, l); in exofs_symlink()
125 inode->i_op = &exofs_fast_symlink_inode_operations; in exofs_symlink()
127 inode->i_size = l-1; in exofs_symlink()
129 mark_inode_dirty(inode); in exofs_symlink()
131 err = exofs_add_nondir(dentry, inode); in exofs_symlink()
136 inode_dec_link_count(inode); in exofs_symlink()
137 iput(inode); in exofs_symlink()
141 static int exofs_link(struct dentry *old_dentry, struct inode *dir, in exofs_link()
144 struct inode *inode = d_inode(old_dentry); in exofs_link() local
146 inode->i_ctime = CURRENT_TIME; in exofs_link()
147 inode_inc_link_count(inode); in exofs_link()
148 ihold(inode); in exofs_link()
150 return exofs_add_nondir(dentry, inode); in exofs_link()
153 static int exofs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) in exofs_mkdir()
155 struct inode *inode; in exofs_mkdir() local
160 inode = exofs_new_inode(dir, S_IFDIR | mode); in exofs_mkdir()
161 err = PTR_ERR(inode); in exofs_mkdir()
162 if (IS_ERR(inode)) in exofs_mkdir()
165 inode->i_op = &exofs_dir_inode_operations; in exofs_mkdir()
166 inode->i_fop = &exofs_dir_operations; in exofs_mkdir()
167 inode->i_mapping->a_ops = &exofs_aops; in exofs_mkdir()
169 inode_inc_link_count(inode); in exofs_mkdir()
171 err = exofs_make_empty(inode, dir); in exofs_mkdir()
175 err = exofs_add_link(dentry, inode); in exofs_mkdir()
179 d_instantiate(dentry, inode); in exofs_mkdir()
184 inode_dec_link_count(inode); in exofs_mkdir()
185 inode_dec_link_count(inode); in exofs_mkdir()
186 iput(inode); in exofs_mkdir()
192 static int exofs_unlink(struct inode *dir, struct dentry *dentry) in exofs_unlink()
194 struct inode *inode = d_inode(dentry); in exofs_unlink() local
207 inode->i_ctime = dir->i_ctime; in exofs_unlink()
208 inode_dec_link_count(inode); in exofs_unlink()
214 static int exofs_rmdir(struct inode *dir, struct dentry *dentry) in exofs_rmdir()
216 struct inode *inode = d_inode(dentry); in exofs_rmdir() local
219 if (exofs_empty_dir(inode)) { in exofs_rmdir()
222 inode->i_size = 0; in exofs_rmdir()
223 inode_dec_link_count(inode); in exofs_rmdir()
230 static int exofs_rename(struct inode *old_dir, struct dentry *old_dentry, in exofs_rename()
231 struct inode *new_dir, struct dentry *new_dentry) in exofs_rename()
233 struct inode *old_inode = d_inode(old_dentry); in exofs_rename()
234 struct inode *new_inode = d_inode(new_dentry); in exofs_rename()