Merge tag 'pinctrl-v3.19-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw...
[cascardo/linux.git] / fs / f2fs / recovery.c
index ebd0132..9160a37 100644 (file)
@@ -111,7 +111,7 @@ retry:
                        iput(einode);
                        goto out_unmap_put;
                }
-               f2fs_delete_entry(de, page, einode);
+               f2fs_delete_entry(de, page, dir, einode);
                iput(einode);
                goto retry;
        }
@@ -129,7 +129,7 @@ retry:
        goto out;
 
 out_unmap_put:
-       kunmap(page);
+       f2fs_dentry_kunmap(dir, page);
        f2fs_put_page(page, 0);
 out_err:
        iput(dir);
@@ -170,13 +170,15 @@ static int find_fsync_dnodes(struct f2fs_sb_info *sbi, struct list_head *head)
        curseg = CURSEG_I(sbi, CURSEG_WARM_NODE);
        blkaddr = NEXT_FREE_BLKADDR(sbi, curseg);
 
+       ra_meta_pages(sbi, blkaddr, 1, META_POR);
+
        while (1) {
                struct fsync_inode_entry *entry;
 
                if (blkaddr < MAIN_BLKADDR(sbi) || blkaddr >= MAX_BLKADDR(sbi))
                        return 0;
 
-               page = get_meta_page_ra(sbi, blkaddr);
+               page = get_meta_page(sbi, blkaddr);
 
                if (cp_ver != cpver_of_node(page))
                        break;
@@ -227,6 +229,8 @@ next:
                /* check next segment */
                blkaddr = next_blkaddr_of_node(page);
                f2fs_put_page(page, 1);
+
+               ra_meta_pages_cond(sbi, blkaddr);
        }
        f2fs_put_page(page, 1);
        return err;
@@ -436,7 +440,9 @@ static int recover_data(struct f2fs_sb_info *sbi,
                if (blkaddr < MAIN_BLKADDR(sbi) || blkaddr >= MAX_BLKADDR(sbi))
                        break;
 
-               page = get_meta_page_ra(sbi, blkaddr);
+               ra_meta_pages_cond(sbi, blkaddr);
+
+               page = get_meta_page(sbi, blkaddr);
 
                if (cp_ver != cpver_of_node(page)) {
                        f2fs_put_page(page, 1);