[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20230411154634.149350-1-luoxiaobing0926@gmail.com>
Date: Tue, 11 Apr 2023 15:46:34 +0000
From: Xiaobing Luo <luoxiaobing0926@...il.com>
To: richard@....at, miquel.raynal@...tlin.com, vigneshr@...com,
mcoquelin.stm32@...il.com, alexandre.torgue@...s.st.com
Cc: linux-mtd@...ts.infradead.org,
linux-arm-kernel@...ts.infradead.org,
linux-stm32@...md-mailman.stormreply.com,
linux-kernel@...r.kernel.org,
Xiaobing Luo <luoxiaobing0926@...il.com>
Subject: [PATCH] ubi: fastmap: Reserve PEBs and init fm_work when fastmap is used.
Don't reserve the two fastmap PEBs when fastmap is disabled, then we can
use the two PEBs in small ubi device.
And don't init the fm_work when fastmap is disabled.
Signed-off-by: Xiaobing Luo <luoxiaobing0926@...il.com>
---
drivers/mtd/ubi/build.c | 3 ++-
drivers/mtd/ubi/fastmap-wl.c | 2 +-
drivers/mtd/ubi/wl.c | 6 +++++-
3 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c
index ad025b2ee417..a98a717b0e66 100644
--- a/drivers/mtd/ubi/build.c
+++ b/drivers/mtd/ubi/build.c
@@ -1120,7 +1120,8 @@ int ubi_detach_mtd_dev(int ubi_num, int anyway)
kthread_stop(ubi->bgt_thread);
#ifdef CONFIG_MTD_UBI_FASTMAP
- cancel_work_sync(&ubi->fm_work);
+ if (!ubi->fm_disabled)
+ cancel_work_sync(&ubi->fm_work);
#endif
ubi_debugfs_exit_dev(ubi);
uif_close(ubi);
diff --git a/drivers/mtd/ubi/fastmap-wl.c b/drivers/mtd/ubi/fastmap-wl.c
index 863f571f1adb..b3df17a782c7 100644
--- a/drivers/mtd/ubi/fastmap-wl.c
+++ b/drivers/mtd/ubi/fastmap-wl.c
@@ -344,7 +344,7 @@ static struct ubi_wl_entry *get_peb_for_wl(struct ubi_device *ubi)
/* We cannot update the fastmap here because this
* function is called in atomic context.
* Let's fail here and refill/update it as soon as possible. */
- if (!ubi->fm_work_scheduled) {
+ if (!ubi->fm_work_scheduled && !ubi->fm_disabled) {
ubi->fm_work_scheduled = 1;
schedule_work(&ubi->fm_work);
}
diff --git a/drivers/mtd/ubi/wl.c b/drivers/mtd/ubi/wl.c
index 26a214f016c1..8906db89808f 100644
--- a/drivers/mtd/ubi/wl.c
+++ b/drivers/mtd/ubi/wl.c
@@ -1908,7 +1908,11 @@ int ubi_wl_init(struct ubi_device *ubi, struct ubi_attach_info *ai)
ubi_assert(ubi->good_peb_count == found_pebs);
reserved_pebs = WL_RESERVED_PEBS;
- ubi_fastmap_init(ubi, &reserved_pebs);
+
+#ifdef CONFIG_MTD_UBI_FASTMAP
+ if (!ubi->fm_disabled)
+ ubi_fastmap_init(ubi, &reserved_pebs);
+#endif
if (ubi->avail_pebs < reserved_pebs) {
ubi_err(ubi, "no enough physical eraseblocks (%d, need %d)",
--
2.34.1
Powered by blists - more mailing lists