Commit c0eebecd authored by Zhihao Cheng's avatar Zhihao Cheng
Browse files

ubi: fastmap: Remove unneeded break condition while filling pools

mainline inclusion
from mainline-v6.7-rc1
commit 415e4723c4325464d489c1ef3335eb6679905471
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I9195H
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=415e4723c4325464d489c1ef3335eb6679905471



-------------------------------------------------

Change pool filling stop condition. Commit d09e9a2b ("ubi:
fastmap: Fix high cpu usage of ubi_bgt by making sure wl_pool
not empty") reserves fastmap data PEBs after filling 1 PEB in
wl_pool. Now wait_free_pebs_for_pool() makes enough free PEBs
before filling pool, there will still be at least 1 PEB in pool
and 1 PEB in wl_pool after doing ubi_refill_pools().

Signed-off-by: default avatarZhihao Cheng <chengzhihao1@huawei.com>
Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
parent 24432af3
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -142,8 +142,7 @@ static void wait_free_pebs_for_pool(struct ubi_device *ubi)
 * @ubi: UBI device description object
 *
 * This helper function checks whether there are enough free pebs (deducted
 * by fastmap pebs) to fill fm_pool and fm_wl_pool, above rule works after
 * there is at least one of free pebs is filled into fm_wl_pool.
 * by fastmap pebs) to fill fm_pool and fm_wl_pool.
 */
static bool has_enough_free_count(struct ubi_device *ubi)
{
@@ -152,7 +151,7 @@ static bool has_enough_free_count(struct ubi_device *ubi)
	if (!ubi->free.rb_node)
		return false;

	if (ubi->fm_wl_pool.size > 0 && !(ubi->ro_mode || ubi->fm_disabled))
	if (!ubi->ro_mode && !ubi->fm_disabled)
		fm_used = ubi->fm_size / ubi->leb_size - 1;

	return ubi->free_count > fm_used;