Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d44e71e8 authored by Blagovest Kolenichev's avatar Blagovest Kolenichev
Browse files

Revert "f2fs: fix to propagate return value of scan_nat_page()"



This reverts commit 130ad547.

This is a preparation change for merging android-4.14 commit
e6fa8a20 into msm-4.14 branch.
The reverted change is committed already as:

35387179 f2fs: fix to propagate return value of scan_nat_page()

Change-Id: Ic8a5872e7437ec0014b3bdca3193e137eede4cb7
Signed-off-by: default avatarBlagovest Kolenichev <bkolenichev@codeaurora.org>
parent a6d441ed
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2874,7 +2874,7 @@ int f2fs_fsync_node_pages(struct f2fs_sb_info *sbi, struct inode *inode,
int f2fs_sync_node_pages(struct f2fs_sb_info *sbi,
			struct writeback_control *wbc,
			bool do_balance, enum iostat_type io_type);
int f2fs_build_free_nids(struct f2fs_sb_info *sbi, bool sync, bool mount);
void f2fs_build_free_nids(struct f2fs_sb_info *sbi, bool sync, bool mount);
bool f2fs_alloc_nid(struct f2fs_sb_info *sbi, nid_t *nid);
void f2fs_alloc_nid_done(struct f2fs_sb_info *sbi, nid_t nid);
void f2fs_alloc_nid_failed(struct f2fs_sb_info *sbi, nid_t nid);
+12 −30
Original line number Diff line number Diff line
@@ -2110,7 +2110,7 @@ static void remove_free_nid(struct f2fs_sb_info *sbi, nid_t nid)
		kmem_cache_free(free_nid_slab, i);
}

static int scan_nat_page(struct f2fs_sb_info *sbi,
static void scan_nat_page(struct f2fs_sb_info *sbi,
			struct page *nat_page, nid_t start_nid)
{
	struct f2fs_nm_info *nm_i = NM_I(sbi);
@@ -2128,10 +2128,7 @@ static int scan_nat_page(struct f2fs_sb_info *sbi,
			break;

		blk_addr = le32_to_cpu(nat_blk->entries[i].block_addr);

		if (blk_addr == NEW_ADDR)
			return -EINVAL;

		f2fs_bug_on(sbi, blk_addr == NEW_ADDR);
		if (blk_addr == NULL_ADDR) {
			add_free_nid(sbi, start_nid, true, true);
		} else {
@@ -2140,8 +2137,6 @@ static int scan_nat_page(struct f2fs_sb_info *sbi,
			spin_unlock(&NM_I(sbi)->nid_list_lock);
		}
	}

	return 0;
}

static void scan_curseg_cache(struct f2fs_sb_info *sbi)
@@ -2197,11 +2192,11 @@ static void scan_free_nid_bits(struct f2fs_sb_info *sbi)
	up_read(&nm_i->nat_tree_lock);
}

static int __f2fs_build_free_nids(struct f2fs_sb_info *sbi,
static void __f2fs_build_free_nids(struct f2fs_sb_info *sbi,
						bool sync, bool mount)
{
	struct f2fs_nm_info *nm_i = NM_I(sbi);
	int i = 0, ret;
	int i = 0;
	nid_t nid = nm_i->next_scan_nid;

	if (unlikely(nid >= nm_i->max_nid))
@@ -2209,17 +2204,17 @@ static int __f2fs_build_free_nids(struct f2fs_sb_info *sbi,

	/* Enough entries */
	if (nm_i->nid_cnt[FREE_NID] >= NAT_ENTRY_PER_BLOCK)
		return 0;
		return;

	if (!sync && !f2fs_available_free_memory(sbi, FREE_NIDS))
		return 0;
		return;

	if (!mount) {
		/* try to find free nids in free_nid_bitmap */
		scan_free_nid_bits(sbi);

		if (nm_i->nid_cnt[FREE_NID] >= NAT_ENTRY_PER_BLOCK)
			return 0;
			return;
	}

	/* readahead nat pages to be scanned */
@@ -2233,16 +2228,8 @@ static int __f2fs_build_free_nids(struct f2fs_sb_info *sbi,
						nm_i->nat_block_bitmap)) {
			struct page *page = get_current_nat_page(sbi, nid);

			ret = scan_nat_page(sbi, page, nid);
			scan_nat_page(sbi, page, nid);
			f2fs_put_page(page, 1);

			if (ret) {
				up_read(&nm_i->nat_tree_lock);
				f2fs_bug_on(sbi, !mount);
				f2fs_msg(sbi->sb, KERN_ERR,
					"NAT is corrupt, run fsck to fix it");
				return -EINVAL;
			}
		}

		nid += (NAT_ENTRY_PER_BLOCK - (nid % NAT_ENTRY_PER_BLOCK));
@@ -2263,19 +2250,13 @@ static int __f2fs_build_free_nids(struct f2fs_sb_info *sbi,

	f2fs_ra_meta_pages(sbi, NAT_BLOCK_OFFSET(nm_i->next_scan_nid),
					nm_i->ra_nid_pages, META_NAT, false);

	return 0;
}

int f2fs_build_free_nids(struct f2fs_sb_info *sbi, bool sync, bool mount)
void f2fs_build_free_nids(struct f2fs_sb_info *sbi, bool sync, bool mount)
{
	int ret;

	mutex_lock(&NM_I(sbi)->build_lock);
	ret = __f2fs_build_free_nids(sbi, sync, mount);
	__f2fs_build_free_nids(sbi, sync, mount);
	mutex_unlock(&NM_I(sbi)->build_lock);

	return ret;
}

/*
@@ -2969,7 +2950,8 @@ int f2fs_build_node_manager(struct f2fs_sb_info *sbi)
	/* load free nid status from nat_bits table */
	load_free_nid_bitmap(sbi);

	return f2fs_build_free_nids(sbi, true, true);
	f2fs_build_free_nids(sbi, true, true);
	return 0;
}

void f2fs_destroy_node_manager(struct f2fs_sb_info *sbi)