Lines Matching refs:inode
66 static int write_dir(struct inode *dir, struct logfs_disk_dentry *dd, in write_dir()
72 static int write_inode(struct inode *inode) in write_inode() argument
74 return __logfs_write_inode(inode, NULL, WF_LOCK); in write_inode()
77 static s64 dir_seek_data(struct inode *inode, s64 pos) in dir_seek_data() argument
79 s64 new_pos = logfs_seek_data(inode, pos); in dir_seek_data()
84 static int beyond_eof(struct inode *inode, loff_t bix) in beyond_eof() argument
86 loff_t pos = bix << inode->i_sb->s_blocksize_bits; in beyond_eof()
87 return pos >= i_size_read(inode); in beyond_eof()
157 static struct page *logfs_get_dd_page(struct inode *dir, struct dentry *dentry) in logfs_get_dd_page()
196 static int logfs_remove_inode(struct inode *inode) in logfs_remove_inode() argument
200 drop_nlink(inode); in logfs_remove_inode()
201 ret = write_inode(inode); in logfs_remove_inode()
202 LOGFS_BUG_ON(ret, inode->i_sb); in logfs_remove_inode()
206 static void abort_transaction(struct inode *inode, struct logfs_transaction *ta) in abort_transaction() argument
208 if (logfs_inode(inode)->li_block) in abort_transaction()
209 logfs_inode(inode)->li_block->ta = NULL; in abort_transaction()
213 static int logfs_unlink(struct inode *dir, struct dentry *dentry) in logfs_unlink()
216 struct inode *inode = d_inode(dentry); in logfs_unlink() local
227 ta->ino = inode->i_ino; in logfs_unlink()
229 inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME; in logfs_unlink()
257 logfs_add_transaction(inode, ta); in logfs_unlink()
258 ret = logfs_remove_inode(inode); in logfs_unlink()
264 static inline int logfs_empty_dir(struct inode *dir) in logfs_empty_dir()
272 static int logfs_rmdir(struct inode *dir, struct dentry *dentry) in logfs_rmdir()
274 struct inode *inode = d_inode(dentry); in logfs_rmdir() local
276 if (!logfs_empty_dir(inode)) in logfs_rmdir()
286 struct inode *dir = file_inode(file); in logfs_readdir()
332 static struct dentry *logfs_lookup(struct inode *dir, struct dentry *dentry, in logfs_lookup()
339 struct inode *inode; in logfs_lookup() local
354 inode = logfs_iget(dir->i_sb, ino); in logfs_lookup()
355 if (IS_ERR(inode)) in logfs_lookup()
358 return d_splice_alias(inode, dentry); in logfs_lookup()
361 static void grow_dir(struct inode *dir, loff_t index) in grow_dir()
368 static int logfs_write_dir(struct inode *dir, struct dentry *dentry, in logfs_write_dir()
369 struct inode *inode) in logfs_write_dir() argument
388 dd->ino = cpu_to_be64(inode->i_ino); in logfs_write_dir()
389 dd->type = logfs_type(inode); in logfs_write_dir()
407 static int __logfs_create(struct inode *dir, struct dentry *dentry, in __logfs_create()
408 struct inode *inode, const char *dest, long destlen) in __logfs_create() argument
411 struct logfs_inode *li = logfs_inode(inode); in __logfs_create()
417 drop_nlink(inode); in __logfs_create()
418 iput(inode); in __logfs_create()
423 ta->ino = inode->i_ino; in __logfs_create()
425 logfs_add_transaction(inode, ta); in __logfs_create()
429 ret = logfs_inode_write(inode, dest, destlen, 0, WF_LOCK, NULL); in __logfs_create()
431 ret = write_inode(inode); in __logfs_create()
434 ret = write_inode(inode); in __logfs_create()
437 abort_transaction(inode, ta); in __logfs_create()
440 drop_nlink(inode); in __logfs_create()
441 iput(inode); in __logfs_create()
447 ret = logfs_write_dir(dir, dentry, inode); in __logfs_create()
455 logfs_add_transaction(inode, ta); in __logfs_create()
456 logfs_remove_inode(inode); in __logfs_create()
457 iput(inode); in __logfs_create()
460 d_instantiate(dentry, inode); in __logfs_create()
466 static int logfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) in logfs_mkdir()
468 struct inode *inode; in logfs_mkdir() local
475 inode = logfs_new_inode(dir, S_IFDIR | mode); in logfs_mkdir()
476 if (IS_ERR(inode)) in logfs_mkdir()
477 return PTR_ERR(inode); in logfs_mkdir()
479 inode->i_op = &logfs_dir_iops; in logfs_mkdir()
480 inode->i_fop = &logfs_dir_fops; in logfs_mkdir()
482 return __logfs_create(dir, dentry, inode, NULL, 0); in logfs_mkdir()
485 static int logfs_create(struct inode *dir, struct dentry *dentry, umode_t mode, in logfs_create()
488 struct inode *inode; in logfs_create() local
490 inode = logfs_new_inode(dir, mode); in logfs_create()
491 if (IS_ERR(inode)) in logfs_create()
492 return PTR_ERR(inode); in logfs_create()
494 inode->i_op = &logfs_reg_iops; in logfs_create()
495 inode->i_fop = &logfs_reg_fops; in logfs_create()
496 inode->i_mapping->a_ops = &logfs_reg_aops; in logfs_create()
498 return __logfs_create(dir, dentry, inode, NULL, 0); in logfs_create()
501 static int logfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, in logfs_mknod()
504 struct inode *inode; in logfs_mknod() local
509 inode = logfs_new_inode(dir, mode); in logfs_mknod()
510 if (IS_ERR(inode)) in logfs_mknod()
511 return PTR_ERR(inode); in logfs_mknod()
513 init_special_inode(inode, mode, rdev); in logfs_mknod()
515 return __logfs_create(dir, dentry, inode, NULL, 0); in logfs_mknod()
518 static int logfs_symlink(struct inode *dir, struct dentry *dentry, in logfs_symlink()
521 struct inode *inode; in logfs_symlink() local
527 inode = logfs_new_inode(dir, S_IFLNK | 0777); in logfs_symlink()
528 if (IS_ERR(inode)) in logfs_symlink()
529 return PTR_ERR(inode); in logfs_symlink()
531 inode->i_op = &logfs_symlink_iops; in logfs_symlink()
532 inode->i_mapping->a_ops = &logfs_reg_aops; in logfs_symlink()
534 return __logfs_create(dir, dentry, inode, target, destlen); in logfs_symlink()
537 static int logfs_link(struct dentry *old_dentry, struct inode *dir, in logfs_link()
540 struct inode *inode = d_inode(old_dentry); in logfs_link() local
542 inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME; in logfs_link()
543 ihold(inode); in logfs_link()
544 inc_nlink(inode); in logfs_link()
545 mark_inode_dirty_sync(inode); in logfs_link()
547 return __logfs_create(dir, dentry, inode, NULL, 0); in logfs_link()
550 static int logfs_get_dd(struct inode *dir, struct dentry *dentry, in logfs_get_dd()
567 static int logfs_delete_dd(struct inode *dir, loff_t pos) in logfs_delete_dd()
585 static int logfs_rename_cross(struct inode *old_dir, struct dentry *old_dentry, in logfs_rename_cross()
586 struct inode *new_dir, struct dentry *new_dentry) in logfs_rename_cross()
633 static int logfs_replace_inode(struct inode *dir, struct dentry *dentry, in logfs_replace_inode()
634 struct logfs_disk_dentry *dd, struct inode *inode) in logfs_replace_inode() argument
642 dd->ino = cpu_to_be64(inode->i_ino); in logfs_replace_inode()
643 dd->type = logfs_type(inode); in logfs_replace_inode()
657 static int logfs_rename_target(struct inode *old_dir, struct dentry *old_dentry, in logfs_rename_target()
658 struct inode *new_dir, struct dentry *new_dentry) in logfs_rename_target()
661 struct inode *old_inode = d_inode(old_dentry); in logfs_rename_target()
662 struct inode *new_inode = d_inode(new_dentry); in logfs_rename_target()
719 static int logfs_rename(struct inode *old_dir, struct dentry *old_dentry, in logfs_rename()
720 struct inode *new_dir, struct dentry *new_dentry) in logfs_rename()
732 struct inode *inode; in logfs_replay_journal() local
740 inode = logfs_iget(sb, ino); in logfs_replay_journal()
741 if (IS_ERR(inode)) in logfs_replay_journal()
744 LOGFS_BUG_ON(i_size_read(inode) > 0, sb); in logfs_replay_journal()
746 err = logfs_remove_inode(inode); in logfs_replay_journal()
747 iput(inode); in logfs_replay_journal()
759 inode = logfs_iget(sb, ino); in logfs_replay_journal()
760 if (IS_ERR(inode)) in logfs_replay_journal()
765 err = logfs_delete_dd(inode, pos); in logfs_replay_journal()
766 iput(inode); in logfs_replay_journal()