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 if (inode->i_blocks) { in sysv_set_inode()
166 inode->i_op = &sysv_symlink_inode_operations; in sysv_set_inode()
167 inode->i_mapping->a_ops = &sysv_aops; in sysv_set_inode()
169 inode->i_op = &sysv_fast_symlink_inode_operations; in sysv_set_inode()
170 nd_terminate_link(SYSV_I(inode)->i_data, inode->i_size, in sysv_set_inode()
171 sizeof(SYSV_I(inode)->i_data) - 1); in sysv_set_inode()
174 init_special_inode(inode, inode->i_mode, rdev); in sysv_set_inode()
177 struct inode *sysv_iget(struct super_block *sb, unsigned int ino) in sysv_iget()
183 struct inode *inode; in sysv_iget() local
192 inode = iget_locked(sb, ino); in sysv_iget()
193 if (!inode) in sysv_iget()
195 if (!(inode->i_state & I_NEW)) in sysv_iget()
196 return inode; in sysv_iget()
201 inode->i_sb->s_id); in sysv_iget()
205 inode->i_mode = fs16_to_cpu(sbi, raw_inode->i_mode); in sysv_iget()
206 i_uid_write(inode, (uid_t)fs16_to_cpu(sbi, raw_inode->i_uid)); in sysv_iget()
207 i_gid_write(inode, (gid_t)fs16_to_cpu(sbi, raw_inode->i_gid)); in sysv_iget()
208 set_nlink(inode, fs16_to_cpu(sbi, raw_inode->i_nlink)); in sysv_iget()
209 inode->i_size = fs32_to_cpu(sbi, raw_inode->i_size); in sysv_iget()
210 inode->i_atime.tv_sec = fs32_to_cpu(sbi, raw_inode->i_atime); in sysv_iget()
211 inode->i_mtime.tv_sec = fs32_to_cpu(sbi, raw_inode->i_mtime); in sysv_iget()
212 inode->i_ctime.tv_sec = fs32_to_cpu(sbi, raw_inode->i_ctime); in sysv_iget()
213 inode->i_ctime.tv_nsec = 0; in sysv_iget()
214 inode->i_atime.tv_nsec = 0; in sysv_iget()
215 inode->i_mtime.tv_nsec = 0; in sysv_iget()
216 inode->i_blocks = 0; in sysv_iget()
218 si = SYSV_I(inode); in sysv_iget()
224 if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode)) in sysv_iget()
225 sysv_set_inode(inode, in sysv_iget()
228 sysv_set_inode(inode, 0); in sysv_iget()
229 unlock_new_inode(inode); in sysv_iget()
230 return inode; in sysv_iget()
233 iget_failed(inode); in sysv_iget()
237 static int __sysv_write_inode(struct inode *inode, int wait) in __sysv_write_inode() argument
239 struct super_block * sb = inode->i_sb; in __sysv_write_inode()
247 ino = inode->i_ino; in __sysv_write_inode()
250 inode->i_sb->s_id, ino); in __sysv_write_inode()
259 raw_inode->i_mode = cpu_to_fs16(sbi, inode->i_mode); in __sysv_write_inode()
260 raw_inode->i_uid = cpu_to_fs16(sbi, fs_high2lowuid(i_uid_read(inode))); in __sysv_write_inode()
261 raw_inode->i_gid = cpu_to_fs16(sbi, fs_high2lowgid(i_gid_read(inode))); in __sysv_write_inode()
262 raw_inode->i_nlink = cpu_to_fs16(sbi, inode->i_nlink); in __sysv_write_inode()
263 raw_inode->i_size = cpu_to_fs32(sbi, inode->i_size); in __sysv_write_inode()
264 raw_inode->i_atime = cpu_to_fs32(sbi, inode->i_atime.tv_sec); in __sysv_write_inode()
265 raw_inode->i_mtime = cpu_to_fs32(sbi, inode->i_mtime.tv_sec); in __sysv_write_inode()
266 raw_inode->i_ctime = cpu_to_fs32(sbi, inode->i_ctime.tv_sec); in __sysv_write_inode()
268 si = SYSV_I(inode); in __sysv_write_inode()
269 if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode)) in __sysv_write_inode()
270 si->i_data[0] = cpu_to_fs32(sbi, old_encode_dev(inode->i_rdev)); in __sysv_write_inode()
287 int sysv_write_inode(struct inode *inode, struct writeback_control *wbc) in sysv_write_inode() argument
289 return __sysv_write_inode(inode, wbc->sync_mode == WB_SYNC_ALL); in sysv_write_inode()
292 int sysv_sync_inode(struct inode *inode) in sysv_sync_inode() argument
294 return __sysv_write_inode(inode, 1); in sysv_sync_inode()
297 static void sysv_evict_inode(struct inode *inode) in sysv_evict_inode() argument
299 truncate_inode_pages_final(&inode->i_data); in sysv_evict_inode()
300 if (!inode->i_nlink) { in sysv_evict_inode()
301 inode->i_size = 0; in sysv_evict_inode()
302 sysv_truncate(inode); in sysv_evict_inode()
304 invalidate_inode_buffers(inode); in sysv_evict_inode()
305 clear_inode(inode); in sysv_evict_inode()
306 if (!inode->i_nlink) in sysv_evict_inode()
307 sysv_free_inode(inode); in sysv_evict_inode()
312 static struct inode *sysv_alloc_inode(struct super_block *sb) in sysv_alloc_inode()
324 struct inode *inode = container_of(head, struct inode, i_rcu); in sysv_i_callback() local
325 kmem_cache_free(sysv_inode_cachep, SYSV_I(inode)); in sysv_i_callback()
328 static void sysv_destroy_inode(struct inode *inode) in sysv_destroy_inode() argument
330 call_rcu(&inode->i_rcu, sysv_i_callback); in sysv_destroy_inode()