aboutsummaryrefslogtreecommitdiffstats
path: root/fs/f2fs/dir.c
diff options
context:
space:
mode:
authorJaegeuk Kim <jaegeuk@kernel.org>2016-05-20 12:43:20 -0400
committerJaegeuk Kim <jaegeuk@kernel.org>2016-06-02 21:05:10 -0400
commita1961246c392dbf7dabdc81b4e074c32053fbf61 (patch)
tree452d915dba0d3dffdaeeb207c59edea09228d922 /fs/f2fs/dir.c
parent8edd03c870e4eb8d635d507a7d83fe35d76117c2 (diff)
f2fs: introduce f2fs_i_links_write with mark_inode_dirty_sync
This patch introduces f2fs_i_links_write() to call mark_inode_dirty_sync() when changing inode->i_links. Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs/dir.c')
-rw-r--r--fs/f2fs/dir.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c
index dc4beae14c92..f8ca0f31271f 100644
--- a/fs/f2fs/dir.c
+++ b/fs/f2fs/dir.c
@@ -437,7 +437,7 @@ struct page *init_inode_metadata(struct inode *inode, struct inode *dir,
437 */ 437 */
438 if (inode->i_nlink == 0) 438 if (inode->i_nlink == 0)
439 remove_orphan_inode(F2FS_I_SB(dir), inode->i_ino); 439 remove_orphan_inode(F2FS_I_SB(dir), inode->i_ino);
440 inc_nlink(inode); 440 f2fs_i_links_write(inode, true);
441 } 441 }
442 return page; 442 return page;
443 443
@@ -456,7 +456,7 @@ void update_parent_metadata(struct inode *dir, struct inode *inode,
456{ 456{
457 if (inode && is_inode_flag_set(inode, FI_NEW_INODE)) { 457 if (inode && is_inode_flag_set(inode, FI_NEW_INODE)) {
458 if (S_ISDIR(inode->i_mode)) { 458 if (S_ISDIR(inode->i_mode)) {
459 inc_nlink(dir); 459 f2fs_i_links_write(dir, true);
460 set_inode_flag(dir, FI_UPDATE_DIR); 460 set_inode_flag(dir, FI_UPDATE_DIR);
461 } 461 }
462 clear_inode_flag(inode, FI_NEW_INODE); 462 clear_inode_flag(inode, FI_NEW_INODE);
@@ -675,7 +675,7 @@ void f2fs_drop_nlink(struct inode *dir, struct inode *inode, struct page *page)
675 down_write(&F2FS_I(inode)->i_sem); 675 down_write(&F2FS_I(inode)->i_sem);
676 676
677 if (S_ISDIR(inode->i_mode)) { 677 if (S_ISDIR(inode->i_mode)) {
678 drop_nlink(dir); 678 f2fs_i_links_write(dir, false);
679 if (page) 679 if (page)
680 update_inode(dir, page); 680 update_inode(dir, page);
681 else 681 else
@@ -683,9 +683,9 @@ void f2fs_drop_nlink(struct inode *dir, struct inode *inode, struct page *page)
683 } 683 }
684 inode->i_ctime = CURRENT_TIME; 684 inode->i_ctime = CURRENT_TIME;
685 685
686 drop_nlink(inode); 686 f2fs_i_links_write(inode, false);
687 if (S_ISDIR(inode->i_mode)) { 687 if (S_ISDIR(inode->i_mode)) {
688 drop_nlink(inode); 688 f2fs_i_links_write(inode, false);
689 f2fs_i_size_write(inode, 0); 689 f2fs_i_size_write(inode, 0);
690 } 690 }
691 up_write(&F2FS_I(inode)->i_sem); 691 up_write(&F2FS_I(inode)->i_sem);