diff options
author | Jaegeuk Kim <jaegeuk@kernel.org> | 2016-05-20 19:32:49 -0400 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2016-06-02 21:05:12 -0400 |
commit | ee6d182f2a19d5d44607b5ae4bec523726d76a99 (patch) | |
tree | 514092851eb0e974c6ac8add90fed10056b84998 /fs/f2fs/namei.c | |
parent | 0f18b462b2e5aff64b8638e8a47284b907351ef3 (diff) |
f2fs: remove syncing inode page in all the cases
This patch reduces to call them across the whole tree.
- sync_inode_page()
- update_inode_page()
- update_inode()
- f2fs_write_inode()
Instead, checkpoint will flush all the dirty inode metadata before syncing
node pages.
Note that, this is doable, since we call mark_inode_dirty_sync() for all
inode's field change which needs to update on-disk inode as well.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs/namei.c')
-rw-r--r-- | fs/f2fs/namei.c | 15 |
1 files changed, 1 insertions, 14 deletions
diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c index f2b2c4068648..496f4e3018b2 100644 --- a/fs/f2fs/namei.c +++ b/fs/f2fs/namei.c | |||
@@ -706,9 +706,6 @@ static int f2fs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
706 | add_orphan_inode(sbi, new_inode->i_ino); | 706 | add_orphan_inode(sbi, new_inode->i_ino); |
707 | else | 707 | else |
708 | release_orphan_inode(sbi); | 708 | release_orphan_inode(sbi); |
709 | |||
710 | update_inode_page(old_inode); | ||
711 | update_inode_page(new_inode); | ||
712 | } else { | 709 | } else { |
713 | f2fs_balance_fs(sbi, true); | 710 | f2fs_balance_fs(sbi, true); |
714 | 711 | ||
@@ -720,10 +717,8 @@ static int f2fs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
720 | goto out_whiteout; | 717 | goto out_whiteout; |
721 | } | 718 | } |
722 | 719 | ||
723 | if (old_dir_entry) { | 720 | if (old_dir_entry) |
724 | f2fs_i_links_write(new_dir, true); | 721 | f2fs_i_links_write(new_dir, true); |
725 | update_inode_page(new_dir); | ||
726 | } | ||
727 | 722 | ||
728 | /* | 723 | /* |
729 | * old entry and new entry can locate in the same inline | 724 | * old entry and new entry can locate in the same inline |
@@ -771,13 +766,11 @@ static int f2fs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
771 | if (old_dir != new_dir && !whiteout) { | 766 | if (old_dir != new_dir && !whiteout) { |
772 | f2fs_set_link(old_inode, old_dir_entry, | 767 | f2fs_set_link(old_inode, old_dir_entry, |
773 | old_dir_page, new_dir); | 768 | old_dir_page, new_dir); |
774 | update_inode_page(old_inode); | ||
775 | } else { | 769 | } else { |
776 | f2fs_dentry_kunmap(old_inode, old_dir_page); | 770 | f2fs_dentry_kunmap(old_inode, old_dir_page); |
777 | f2fs_put_page(old_dir_page, 0); | 771 | f2fs_put_page(old_dir_page, 0); |
778 | } | 772 | } |
779 | f2fs_i_links_write(old_dir, false); | 773 | f2fs_i_links_write(old_dir, false); |
780 | update_inode_page(old_dir); | ||
781 | } | 774 | } |
782 | 775 | ||
783 | f2fs_unlock_op(sbi); | 776 | f2fs_unlock_op(sbi); |
@@ -899,8 +892,6 @@ static int f2fs_cross_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
899 | file_lost_pino(old_inode); | 892 | file_lost_pino(old_inode); |
900 | up_write(&F2FS_I(old_inode)->i_sem); | 893 | up_write(&F2FS_I(old_inode)->i_sem); |
901 | 894 | ||
902 | update_inode_page(old_inode); | ||
903 | |||
904 | old_dir->i_ctime = CURRENT_TIME; | 895 | old_dir->i_ctime = CURRENT_TIME; |
905 | if (old_nlink) { | 896 | if (old_nlink) { |
906 | down_write(&F2FS_I(old_dir)->i_sem); | 897 | down_write(&F2FS_I(old_dir)->i_sem); |
@@ -908,7 +899,6 @@ static int f2fs_cross_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
908 | up_write(&F2FS_I(old_dir)->i_sem); | 899 | up_write(&F2FS_I(old_dir)->i_sem); |
909 | } | 900 | } |
910 | mark_inode_dirty_sync(old_dir); | 901 | mark_inode_dirty_sync(old_dir); |
911 | update_inode_page(old_dir); | ||
912 | 902 | ||
913 | /* update directory entry info of new dir inode */ | 903 | /* update directory entry info of new dir inode */ |
914 | f2fs_set_link(new_dir, new_entry, new_page, old_inode); | 904 | f2fs_set_link(new_dir, new_entry, new_page, old_inode); |
@@ -917,8 +907,6 @@ static int f2fs_cross_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
917 | file_lost_pino(new_inode); | 907 | file_lost_pino(new_inode); |
918 | up_write(&F2FS_I(new_inode)->i_sem); | 908 | up_write(&F2FS_I(new_inode)->i_sem); |
919 | 909 | ||
920 | update_inode_page(new_inode); | ||
921 | |||
922 | new_dir->i_ctime = CURRENT_TIME; | 910 | new_dir->i_ctime = CURRENT_TIME; |
923 | if (new_nlink) { | 911 | if (new_nlink) { |
924 | down_write(&F2FS_I(new_dir)->i_sem); | 912 | down_write(&F2FS_I(new_dir)->i_sem); |
@@ -926,7 +914,6 @@ static int f2fs_cross_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
926 | up_write(&F2FS_I(new_dir)->i_sem); | 914 | up_write(&F2FS_I(new_dir)->i_sem); |
927 | } | 915 | } |
928 | mark_inode_dirty_sync(new_dir); | 916 | mark_inode_dirty_sync(new_dir); |
929 | update_inode_page(new_dir); | ||
930 | 917 | ||
931 | f2fs_unlock_op(sbi); | 918 | f2fs_unlock_op(sbi); |
932 | 919 | ||