Lines Matching refs:inode
154 void sysv_set_inode(struct inode *inode, dev_t rdev) in sysv_set_inode() argument
156 if (S_ISREG(inode->i_mode)) { in sysv_set_inode()
157 inode->i_op = &sysv_file_inode_operations; in sysv_set_inode()
158 inode->i_fop = &sysv_file_operations; in sysv_set_inode()
159 inode->i_mapping->a_ops = &sysv_aops; in sysv_set_inode()
160 } else if (S_ISDIR(inode->i_mode)) { in sysv_set_inode()
161 inode->i_op = &sysv_dir_inode_operations; in sysv_set_inode()
162 inode->i_fop = &sysv_dir_operations; in sysv_set_inode()
163 inode->i_mapping->a_ops = &sysv_aops; in sysv_set_inode()
164 } else if (S_ISLNK(inode->i_mode)) { in sysv_set_inode()
165 inode->i_op = &sysv_symlink_inode_operations; in sysv_set_inode()
166 inode->i_mapping->a_ops = &sysv_aops; in sysv_set_inode()
168 init_special_inode(inode, inode->i_mode, rdev); in sysv_set_inode()
171 struct inode *sysv_iget(struct super_block *sb, unsigned int ino) in sysv_iget()
177 struct inode *inode; in sysv_iget() local
186 inode = iget_locked(sb, ino); in sysv_iget()
187 if (!inode) in sysv_iget()
189 if (!(inode->i_state & I_NEW)) in sysv_iget()
190 return inode; in sysv_iget()
195 inode->i_sb->s_id); in sysv_iget()
199 inode->i_mode = fs16_to_cpu(sbi, raw_inode->i_mode); in sysv_iget()
200 i_uid_write(inode, (uid_t)fs16_to_cpu(sbi, raw_inode->i_uid)); in sysv_iget()
201 i_gid_write(inode, (gid_t)fs16_to_cpu(sbi, raw_inode->i_gid)); in sysv_iget()
202 set_nlink(inode, fs16_to_cpu(sbi, raw_inode->i_nlink)); in sysv_iget()
203 inode->i_size = fs32_to_cpu(sbi, raw_inode->i_size); in sysv_iget()
204 inode->i_atime.tv_sec = fs32_to_cpu(sbi, raw_inode->i_atime); in sysv_iget()
205 inode->i_mtime.tv_sec = fs32_to_cpu(sbi, raw_inode->i_mtime); in sysv_iget()
206 inode->i_ctime.tv_sec = fs32_to_cpu(sbi, raw_inode->i_ctime); in sysv_iget()
207 inode->i_ctime.tv_nsec = 0; in sysv_iget()
208 inode->i_atime.tv_nsec = 0; in sysv_iget()
209 inode->i_mtime.tv_nsec = 0; in sysv_iget()
210 inode->i_blocks = 0; in sysv_iget()
212 si = SYSV_I(inode); in sysv_iget()
218 if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode)) in sysv_iget()
219 sysv_set_inode(inode, in sysv_iget()
222 sysv_set_inode(inode, 0); in sysv_iget()
223 unlock_new_inode(inode); in sysv_iget()
224 return inode; in sysv_iget()
227 iget_failed(inode); in sysv_iget()
231 static int __sysv_write_inode(struct inode *inode, int wait) in __sysv_write_inode() argument
233 struct super_block * sb = inode->i_sb; in __sysv_write_inode()
241 ino = inode->i_ino; in __sysv_write_inode()
244 inode->i_sb->s_id, ino); in __sysv_write_inode()
253 raw_inode->i_mode = cpu_to_fs16(sbi, inode->i_mode); in __sysv_write_inode()
254 raw_inode->i_uid = cpu_to_fs16(sbi, fs_high2lowuid(i_uid_read(inode))); in __sysv_write_inode()
255 raw_inode->i_gid = cpu_to_fs16(sbi, fs_high2lowgid(i_gid_read(inode))); in __sysv_write_inode()
256 raw_inode->i_nlink = cpu_to_fs16(sbi, inode->i_nlink); in __sysv_write_inode()
257 raw_inode->i_size = cpu_to_fs32(sbi, inode->i_size); in __sysv_write_inode()
258 raw_inode->i_atime = cpu_to_fs32(sbi, inode->i_atime.tv_sec); in __sysv_write_inode()
259 raw_inode->i_mtime = cpu_to_fs32(sbi, inode->i_mtime.tv_sec); in __sysv_write_inode()
260 raw_inode->i_ctime = cpu_to_fs32(sbi, inode->i_ctime.tv_sec); in __sysv_write_inode()
262 si = SYSV_I(inode); in __sysv_write_inode()
263 if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode)) in __sysv_write_inode()
264 si->i_data[0] = cpu_to_fs32(sbi, old_encode_dev(inode->i_rdev)); in __sysv_write_inode()
281 int sysv_write_inode(struct inode *inode, struct writeback_control *wbc) in sysv_write_inode() argument
283 return __sysv_write_inode(inode, wbc->sync_mode == WB_SYNC_ALL); in sysv_write_inode()
286 int sysv_sync_inode(struct inode *inode) in sysv_sync_inode() argument
288 return __sysv_write_inode(inode, 1); in sysv_sync_inode()
291 static void sysv_evict_inode(struct inode *inode) in sysv_evict_inode() argument
293 truncate_inode_pages_final(&inode->i_data); in sysv_evict_inode()
294 if (!inode->i_nlink) { in sysv_evict_inode()
295 inode->i_size = 0; in sysv_evict_inode()
296 sysv_truncate(inode); in sysv_evict_inode()
298 invalidate_inode_buffers(inode); in sysv_evict_inode()
299 clear_inode(inode); in sysv_evict_inode()
300 if (!inode->i_nlink) in sysv_evict_inode()
301 sysv_free_inode(inode); in sysv_evict_inode()
306 static struct inode *sysv_alloc_inode(struct super_block *sb) in sysv_alloc_inode()
318 struct inode *inode = container_of(head, struct inode, i_rcu); in sysv_i_callback() local
319 kmem_cache_free(sysv_inode_cachep, SYSV_I(inode)); in sysv_i_callback()
322 static void sysv_destroy_inode(struct inode *inode) in sysv_destroy_inode() argument
324 call_rcu(&inode->i_rcu, sysv_i_callback); in sysv_destroy_inode()