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

Commit 48a0bb1a authored by Jaegeuk Kim's avatar Jaegeuk Kim
Browse files

Revert "f2fs: give message and set need_fsck given broken node id"



This reverts commit 32c00c53.

Change-Id: I252595fb3b0b47c981b94736775323cbd1c99bc5
Signed-off-by: default avatarJaegeuk Kim <jaegeuk@google.com>
parent 568727f6
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -1585,6 +1585,18 @@ static inline bool __exist_node_summaries(struct f2fs_sb_info *sbi)
			is_set_ckpt_flags(sbi, CP_FASTBOOT_FLAG));
}

/*
 * Check whether the given nid is within node id range.
 */
static inline int check_nid_range(struct f2fs_sb_info *sbi, nid_t nid)
{
	if (unlikely(nid < F2FS_ROOT_INO(sbi)))
		return -EINVAL;
	if (unlikely(nid >= NM_I(sbi)->max_nid))
		return -EINVAL;
	return 0;
}

/*
 * Check whether the inode has blocks or not
 */
@@ -2707,7 +2719,6 @@ f2fs_hash_t f2fs_dentry_hash(const struct qstr *name_info,
struct dnode_of_data;
struct node_info;

int check_nid_range(struct f2fs_sb_info *sbi, nid_t nid);
bool available_free_memory(struct f2fs_sb_info *sbi, int type);
int need_dentry_mark(struct f2fs_sb_info *sbi, nid_t nid);
bool is_checkpointed_node(struct f2fs_sb_info *sbi, nid_t nid);
+7 −6
Original line number Diff line number Diff line
@@ -194,8 +194,12 @@ static int do_read_inode(struct inode *inode)
	projid_t i_projid;

	/* Check if ino is within scope */
	if (check_nid_range(sbi, inode->i_ino))
	if (check_nid_range(sbi, inode->i_ino)) {
		f2fs_msg(inode->i_sb, KERN_ERR, "bad inode number: %lu",
			 (unsigned long) inode->i_ino);
		WARN_ON(1);
		return -EINVAL;
	}

	node_page = get_node_page(sbi, inode->i_ino);
	if (IS_ERR(node_page))
@@ -584,11 +588,8 @@ void f2fs_evict_inode(struct inode *inode)
		alloc_nid_failed(sbi, inode->i_ino);
		clear_inode_flag(inode, FI_FREE_NID);
	} else {
		/*
		 * If xattr nid is corrupted, we can reach out error condition,
		 * err & !exist_written_data(sbi, inode->i_ino, ORPHAN_INO)).
		 * In that case, check_nid_range() is enough to give a clue.
		 */
		f2fs_bug_on(sbi, err &&
			!exist_written_data(sbi, inode->i_ino, ORPHAN_INO));
	}
out_clear:
	fscrypt_put_encryption_info(inode);
+2 −19
Original line number Diff line number Diff line
@@ -29,21 +29,6 @@ static struct kmem_cache *nat_entry_slab;
static struct kmem_cache *free_nid_slab;
static struct kmem_cache *nat_entry_set_slab;

/*
 * Check whether the given nid is within node id range.
 */
int check_nid_range(struct f2fs_sb_info *sbi, nid_t nid)
{
	if (unlikely(nid < F2FS_ROOT_INO(sbi) || nid >= NM_I(sbi)->max_nid)) {
		set_sbi_flag(sbi, SBI_NEED_FSCK);
		f2fs_msg(sbi->sb, KERN_WARNING,
				"%s: out-of-range nid=%x, run fsck to fix.",
				__func__, nid);
		return -EINVAL;
	}
	return 0;
}

bool available_free_memory(struct f2fs_sb_info *sbi, int type)
{
	struct f2fs_nm_info *nm_i = NM_I(sbi);
@@ -1173,8 +1158,7 @@ void ra_node_page(struct f2fs_sb_info *sbi, nid_t nid)

	if (!nid)
		return;
	if (check_nid_range(sbi, nid))
		return;
	f2fs_bug_on(sbi, check_nid_range(sbi, nid));

	rcu_read_lock();
	apage = radix_tree_lookup(&NODE_MAPPING(sbi)->page_tree, nid);
@@ -1198,8 +1182,7 @@ static struct page *__get_node_page(struct f2fs_sb_info *sbi, pgoff_t nid,

	if (!nid)
		return ERR_PTR(-ENOENT);
	if (check_nid_range(sbi, nid))
		return ERR_PTR(-EINVAL);
	f2fs_bug_on(sbi, check_nid_range(sbi, nid));
repeat:
	page = f2fs_grab_cache_page(NODE_MAPPING(sbi), nid, false);
	if (!page)