f2fs: avoid clear valid page
authorChao Yu <chao2.yu@samsung.com>
Wed, 12 Aug 2015 09:48:21 +0000 (17:48 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Thu, 20 Aug 2015 16:00:06 +0000 (09:00 -0700)
In f2fs_delete_entry, if last dirent is remove from the dentry page,
we will try to punch that page since it has no valid date in it.

But truncate_hole which is used for punching could fail because of
no memory or IO error, if that happened, we'd better skip clearing
this valid dentry page.

Signed-off-by: Chao Yu <chao2.yu@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/dir.c

index a34ebd8312ab89e703cfe85a3820072b4d06c083..8f15fc134040c5ee4865f975cc37dfeffe58360f 100644 (file)
@@ -718,8 +718,8 @@ void f2fs_delete_entry(struct f2fs_dir_entry *dentry, struct page *page,
        if (inode)
                f2fs_drop_nlink(dir, inode, NULL);
 
-       if (bit_pos == NR_DENTRY_IN_BLOCK) {
-               truncate_hole(dir, page->index, page->index + 1);
+       if (bit_pos == NR_DENTRY_IN_BLOCK &&
+                       !truncate_hole(dir, page->index, page->index + 1)) {
                clear_page_dirty_for_io(page);
                ClearPagePrivate(page);
                ClearPageUptodate(page);
This page took 0.026239 seconds and 5 git commands to generate.