瀏覽代碼

f2fs: fix to record dirty page count for symlink

Dirty page can be exist in mapping of newly created symlink, but previously
we did not maintain the counting of dirty page for symlink like we maintained
for regular/directory, so the counting we lookuped should be wrong.

This patch adds missed dirty page counting for symlink to fix this issue.

Signed-off-by: Chao Yu <chao2.yu@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Chao Yu 10 年之前
父節點
當前提交
5ac9f36fca
共有 2 個文件被更改,包括 4 次插入2 次删除
  1. 2 1
      fs/f2fs/checkpoint.c
  2. 2 1
      fs/f2fs/f2fs.h

+ 2 - 1
fs/f2fs/checkpoint.c

@@ -704,7 +704,8 @@ void update_dirty_page(struct inode *inode, struct page *page)
 	struct inode_entry *new;
 	struct inode_entry *new;
 	int ret = 0;
 	int ret = 0;
 
 
-	if (!S_ISDIR(inode->i_mode) && !S_ISREG(inode->i_mode))
+	if (!S_ISDIR(inode->i_mode) && !S_ISREG(inode->i_mode) &&
+			!S_ISLNK(inode->i_mode))
 		return;
 		return;
 
 
 	if (!S_ISDIR(inode->i_mode)) {
 	if (!S_ISDIR(inode->i_mode)) {

+ 2 - 1
fs/f2fs/f2fs.h

@@ -1039,7 +1039,8 @@ static inline void dec_page_count(struct f2fs_sb_info *sbi, int count_type)
 
 
 static inline void inode_dec_dirty_pages(struct inode *inode)
 static inline void inode_dec_dirty_pages(struct inode *inode)
 {
 {
-	if (!S_ISDIR(inode->i_mode) && !S_ISREG(inode->i_mode))
+	if (!S_ISDIR(inode->i_mode) && !S_ISREG(inode->i_mode) &&
+			!S_ISLNK(inode->i_mode))
 		return;
 		return;
 
 
 	atomic_dec(&F2FS_I(inode)->dirty_pages);
 	atomic_dec(&F2FS_I(inode)->dirty_pages);