Lines Matching refs:inode
19 static int add_nondir(struct dentry *dentry, struct inode *inode) in add_nondir() argument
21 int err = sysv_add_link(dentry, inode); in add_nondir()
23 d_instantiate(dentry, inode); in add_nondir()
26 inode_dec_link_count(inode); in add_nondir()
27 iput(inode); in add_nondir()
31 static struct dentry *sysv_lookup(struct inode * dir, struct dentry * dentry, unsigned int flags) in sysv_lookup()
33 struct inode * inode = NULL; in sysv_lookup() local
40 inode = sysv_iget(dir->i_sb, ino); in sysv_lookup()
41 return d_splice_alias(inode, dentry); in sysv_lookup()
44 static int sysv_mknod(struct user_namespace *mnt_userns, struct inode *dir, in sysv_mknod()
47 struct inode * inode; in sysv_mknod() local
53 inode = sysv_new_inode(dir, mode); in sysv_mknod()
54 err = PTR_ERR(inode); in sysv_mknod()
56 if (!IS_ERR(inode)) { in sysv_mknod()
57 sysv_set_inode(inode, rdev); in sysv_mknod()
58 mark_inode_dirty(inode); in sysv_mknod()
59 err = add_nondir(dentry, inode); in sysv_mknod()
64 static int sysv_create(struct user_namespace *mnt_userns, struct inode *dir, in sysv_create()
70 static int sysv_symlink(struct user_namespace *mnt_userns, struct inode *dir, in sysv_symlink()
75 struct inode * inode; in sysv_symlink() local
80 inode = sysv_new_inode(dir, S_IFLNK|0777); in sysv_symlink()
81 err = PTR_ERR(inode); in sysv_symlink()
82 if (IS_ERR(inode)) in sysv_symlink()
85 sysv_set_inode(inode, 0); in sysv_symlink()
86 err = page_symlink(inode, symname, l); in sysv_symlink()
90 mark_inode_dirty(inode); in sysv_symlink()
91 err = add_nondir(dentry, inode); in sysv_symlink()
96 inode_dec_link_count(inode); in sysv_symlink()
97 iput(inode); in sysv_symlink()
101 static int sysv_link(struct dentry * old_dentry, struct inode * dir, in sysv_link()
104 struct inode *inode = d_inode(old_dentry); in sysv_link() local
106 inode->i_ctime = current_time(inode); in sysv_link()
107 inode_inc_link_count(inode); in sysv_link()
108 ihold(inode); in sysv_link()
110 return add_nondir(dentry, inode); in sysv_link()
113 static int sysv_mkdir(struct user_namespace *mnt_userns, struct inode *dir, in sysv_mkdir()
116 struct inode * inode; in sysv_mkdir() local
121 inode = sysv_new_inode(dir, S_IFDIR|mode); in sysv_mkdir()
122 err = PTR_ERR(inode); in sysv_mkdir()
123 if (IS_ERR(inode)) in sysv_mkdir()
126 sysv_set_inode(inode, 0); in sysv_mkdir()
128 inode_inc_link_count(inode); in sysv_mkdir()
130 err = sysv_make_empty(inode, dir); in sysv_mkdir()
134 err = sysv_add_link(dentry, inode); in sysv_mkdir()
138 d_instantiate(dentry, inode); in sysv_mkdir()
143 inode_dec_link_count(inode); in sysv_mkdir()
144 inode_dec_link_count(inode); in sysv_mkdir()
145 iput(inode); in sysv_mkdir()
151 static int sysv_unlink(struct inode * dir, struct dentry * dentry) in sysv_unlink()
153 struct inode * inode = d_inode(dentry); in sysv_unlink() local
166 inode->i_ctime = dir->i_ctime; in sysv_unlink()
167 inode_dec_link_count(inode); in sysv_unlink()
172 static int sysv_rmdir(struct inode * dir, struct dentry * dentry) in sysv_rmdir()
174 struct inode *inode = d_inode(dentry); in sysv_rmdir() local
177 if (sysv_empty_dir(inode)) { in sysv_rmdir()
180 inode->i_size = 0; in sysv_rmdir()
181 inode_dec_link_count(inode); in sysv_rmdir()
192 static int sysv_rename(struct user_namespace *mnt_userns, struct inode *old_dir, in sysv_rename()
193 struct dentry *old_dentry, struct inode *new_dir, in sysv_rename()
196 struct inode * old_inode = d_inode(old_dentry); in sysv_rename()
197 struct inode * new_inode = d_inode(new_dentry); in sysv_rename()