Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile
[deliverable/linux.git] / fs / f2fs / recovery.c
index b568b28c74f2a677d800a8a102018d7b3909212e..9e652d5a659bd3377be2a818e0f8e1c61e7b4272 100644 (file)
@@ -153,9 +153,12 @@ retry:
                f2fs_delete_entry(de, page, dir, einode);
                iput(einode);
                goto retry;
+       } else if (IS_ERR(page)) {
+               err = PTR_ERR(page);
+       } else {
+               err = __f2fs_add_link(dir, &name, inode,
+                                       inode->i_ino, inode->i_mode);
        }
-       err = __f2fs_add_link(dir, &name, inode, inode->i_ino, inode->i_mode);
-
        goto out;
 
 out_unmap_put:
@@ -479,6 +482,8 @@ static int do_recover_data(struct f2fs_sb_info *sbi, struct inode *inode,
 #endif
                                /* We should not get -ENOSPC */
                                f2fs_bug_on(sbi, err);
+                               if (err)
+                                       goto err;
                        }
 
                        /* Check the previous node page having this index */
@@ -624,8 +629,12 @@ out:
        if (err) {
                bool invalidate = false;
 
-               if (discard_next_dnode(sbi, blkaddr))
+               if (test_opt(sbi, LFS)) {
+                       update_meta_page(sbi, NULL, blkaddr);
                        invalidate = true;
+               } else if (discard_next_dnode(sbi, blkaddr)) {
+                       invalidate = true;
+               }
 
                /* Flush all the NAT/SIT pages */
                while (get_pages(sbi, F2FS_DIRTY_META))
This page took 0.026909 seconds and 5 git commands to generate.