* Fastmap update v2 (pile 7)
@ 2014-11-30 12:22 Richard Weinberger
2014-11-30 12:22 ` [PATCH 1/4] UBI: Fastmap: Add blank line after declarations Richard Weinberger
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Richard Weinberger @ 2014-11-30 12:22 UTC (permalink / raw)
To: dedekind1; +Cc: linux-mtd, linux-kernel
Artem,
this is pile 7 of 7.
[PATCH 1/4] UBI: Fastmap: Add blank line after declarations
[PATCH 2/4] Add drivers/mtd/ubi/fastmap-wl.c to MAINTAINERS file
[PATCH 3/4] UBI: Fastmap: Remove is_fm_block()
[PATCH 4/4] UBI: Fastmap: Optimize anchor PEB search
Thanks,
//richard
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/4] UBI: Fastmap: Add blank line after declarations
2014-11-30 12:22 Fastmap update v2 (pile 7) Richard Weinberger
@ 2014-11-30 12:22 ` Richard Weinberger
2014-11-30 12:22 ` [PATCH 2/4] Add drivers/mtd/ubi/fastmap-wl.c to MAINTAINERS file Richard Weinberger
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Richard Weinberger @ 2014-11-30 12:22 UTC (permalink / raw)
To: dedekind1; +Cc: Richard Weinberger, linux-mtd, linux-kernel
Another checkpatch complaint:
WARNING: Missing a blank line after declarations
Signed-off-by: Richard Weinberger <richard@nod.at>
---
drivers/mtd/ubi/fastmap-wl.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/mtd/ubi/fastmap-wl.c b/drivers/mtd/ubi/fastmap-wl.c
index 7a72af2..067aa90 100644
--- a/drivers/mtd/ubi/fastmap-wl.c
+++ b/drivers/mtd/ubi/fastmap-wl.c
@@ -21,6 +21,7 @@
static void update_fastmap_work_fn(struct work_struct *wrk)
{
struct ubi_device *ubi = container_of(wrk, struct ubi_device, fm_work);
+
ubi_update_fastmap(ubi);
spin_lock(&ubi->wl_lock);
ubi->fm_work_scheduled = 0;
--
1.8.4.5
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/4] Add drivers/mtd/ubi/fastmap-wl.c to MAINTAINERS file
2014-11-30 12:22 Fastmap update v2 (pile 7) Richard Weinberger
2014-11-30 12:22 ` [PATCH 1/4] UBI: Fastmap: Add blank line after declarations Richard Weinberger
@ 2014-11-30 12:22 ` Richard Weinberger
2014-11-30 12:22 ` [PATCH 3/4] UBI: Fastmap: Remove is_fm_block() Richard Weinberger
2014-11-30 12:22 ` [PATCH 4/4] UBI: Fastmap: Optimize anchor PEB search Richard Weinberger
3 siblings, 0 replies; 6+ messages in thread
From: Richard Weinberger @ 2014-11-30 12:22 UTC (permalink / raw)
To: dedekind1; +Cc: Richard Weinberger, linux-mtd, linux-kernel
Signed-off-by: Richard Weinberger <richard@nod.at>
---
MAINTAINERS | 1 +
1 file changed, 1 insertion(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index ea4d005..87d4d36 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -9631,6 +9631,7 @@ M: Richard Weinberger <richard@nod.at>
L: linux-mtd@lists.infradead.org
S: Maintained
F: drivers/mtd/ubi/fastmap.c
+F: drivers/mtd/ubi/fastmap-wl.c
USB ACM DRIVER
M: Oliver Neukum <oliver@neukum.org>
--
1.8.4.5
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/4] UBI: Fastmap: Remove is_fm_block()
2014-11-30 12:22 Fastmap update v2 (pile 7) Richard Weinberger
2014-11-30 12:22 ` [PATCH 1/4] UBI: Fastmap: Add blank line after declarations Richard Weinberger
2014-11-30 12:22 ` [PATCH 2/4] Add drivers/mtd/ubi/fastmap-wl.c to MAINTAINERS file Richard Weinberger
@ 2014-11-30 12:22 ` Richard Weinberger
2014-11-30 12:22 ` [PATCH 4/4] UBI: Fastmap: Optimize anchor PEB search Richard Weinberger
3 siblings, 0 replies; 6+ messages in thread
From: Richard Weinberger @ 2014-11-30 12:22 UTC (permalink / raw)
To: dedekind1; +Cc: Richard Weinberger, linux-mtd, linux-kernel
This function was added to fastmap in a very early stage
to have paranoid assertions.
With the current fastmap implementation this assert will never
trigger as fastmap PEBs are not seen by the WL sub-system.
Remove it to save us some CPU cycles.
Signed-off-by: Richard Weinberger <richard@nod.at>
---
drivers/mtd/ubi/fastmap-wl.c | 19 -------------------
drivers/mtd/ubi/wl.c | 5 -----
drivers/mtd/ubi/wl.h | 5 -----
3 files changed, 29 deletions(-)
diff --git a/drivers/mtd/ubi/fastmap-wl.c b/drivers/mtd/ubi/fastmap-wl.c
index 067aa90..b2a6653 100644
--- a/drivers/mtd/ubi/fastmap-wl.c
+++ b/drivers/mtd/ubi/fastmap-wl.c
@@ -29,25 +29,6 @@ static void update_fastmap_work_fn(struct work_struct *wrk)
}
/**
- * is_fm_block - returns 1 if a PEB is currently used in a fastmap.
- * @ubi: UBI device description object
- * @pnum: the to be checked PEB
- */
-static int is_fm_block(struct ubi_device *ubi, int pnum)
-{
- int i;
-
- if (!ubi->fm)
- return 0;
-
- for (i = 0; i < ubi->fm->used_blocks; i++)
- if (ubi->fm->e[i]->pnum == pnum)
- return 1;
-
- return 0;
-}
-
-/**
* find_anchor_wl_entry - find wear-leveling entry to used as anchor PEB.
* @root: the RB-tree where to look for
*/
diff --git a/drivers/mtd/ubi/wl.c b/drivers/mtd/ubi/wl.c
index c51c4e8..f642740 100644
--- a/drivers/mtd/ubi/wl.c
+++ b/drivers/mtd/ubi/wl.c
@@ -585,7 +585,6 @@ static int schedule_erase(struct ubi_device *ubi, struct ubi_wl_entry *e,
struct ubi_work *wl_wrk;
ubi_assert(e);
- ubi_assert(!is_fm_block(ubi, e->pnum));
dbg_wl("schedule erasure of PEB %d, EC %d, torture %d",
e->pnum, e->ec, torture);
@@ -1045,8 +1044,6 @@ static int erase_worker(struct ubi_device *ubi, struct ubi_work *wl_wrk,
dbg_wl("erase PEB %d EC %d LEB %d:%d",
pnum, e->ec, wl_wrk->vol_id, wl_wrk->lnum);
- ubi_assert(!is_fm_block(ubi, e->pnum));
-
err = sync_erase(ubi, e, wl_wrk->torture);
if (!err) {
/* Fine, we've erased it successfully */
@@ -1526,7 +1523,6 @@ int ubi_wl_init(struct ubi_device *ubi, struct ubi_attach_info *ai)
e->pnum = aeb->pnum;
e->ec = aeb->ec;
- ubi_assert(!is_fm_block(ubi, e->pnum));
ubi->lookuptbl[e->pnum] = e;
if (schedule_erase(ubi, e, aeb->vol_id, aeb->lnum, 0)) {
wl_entry_destroy(ubi, e);
@@ -1547,7 +1543,6 @@ int ubi_wl_init(struct ubi_device *ubi, struct ubi_attach_info *ai)
e->pnum = aeb->pnum;
e->ec = aeb->ec;
ubi_assert(e->ec >= 0);
- ubi_assert(!is_fm_block(ubi, e->pnum));
wl_tree_add(e, &ubi->free);
ubi->free_count++;
diff --git a/drivers/mtd/ubi/wl.h b/drivers/mtd/ubi/wl.h
index fbc2d8e..bd1f07e 100644
--- a/drivers/mtd/ubi/wl.h
+++ b/drivers/mtd/ubi/wl.h
@@ -1,7 +1,6 @@
#ifndef UBI_WL_H
#define UBI_WL_H
#ifdef CONFIG_MTD_UBI_FASTMAP
-static int is_fm_block(struct ubi_device *ubi, int pnum);
static int anchor_pebs_avalible(struct rb_root *root);
static void update_fastmap_work_fn(struct work_struct *wrk);
static struct ubi_wl_entry *find_anchor_wl_entry(struct rb_root *root);
@@ -18,10 +17,6 @@ static struct ubi_wl_entry *may_reserve_for_fm(struct ubi_device *ubi,
struct rb_root *root);
#else /* !CONFIG_MTD_UBI_FASTMAP */
static struct ubi_wl_entry *get_peb_for_wl(struct ubi_device *ubi);
-static inline int is_fm_block(struct ubi_device *ubi, int pnum)
-{
- return 0;
-}
static inline void ubi_fastmap_close(struct ubi_device *ubi) { }
static inline void ubi_fastmap_init(struct ubi_device *ubi, int *count) { }
static struct ubi_wl_entry *may_reserve_for_fm(struct ubi_device *ubi,
--
1.8.4.5
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 4/4] UBI: Fastmap: Optimize anchor PEB search
2014-11-30 12:22 Fastmap update v2 (pile 7) Richard Weinberger
` (2 preceding siblings ...)
2014-11-30 12:22 ` [PATCH 3/4] UBI: Fastmap: Remove is_fm_block() Richard Weinberger
@ 2014-11-30 12:22 ` Richard Weinberger
2014-12-05 15:23 ` Richard Weinberger
3 siblings, 1 reply; 6+ messages in thread
From: Richard Weinberger @ 2014-11-30 12:22 UTC (permalink / raw)
To: dedekind1; +Cc: Richard Weinberger, linux-mtd, linux-kernel
The UBI RB trees are sorted by the PEB number, hence
we don't have to traverse the whole tree because ubi_rb_for_each_entry()
walks the tree in sort order.
Signed-off-by: Richard Weinberger <richard@nod.at>
---
drivers/mtd/ubi/fastmap-wl.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/mtd/ubi/fastmap-wl.c b/drivers/mtd/ubi/fastmap-wl.c
index b2a6653..c7ad2a7 100644
--- a/drivers/mtd/ubi/fastmap-wl.c
+++ b/drivers/mtd/ubi/fastmap-wl.c
@@ -39,7 +39,10 @@ static struct ubi_wl_entry *find_anchor_wl_entry(struct rb_root *root)
int max_ec = UBI_MAX_ERASECOUNTER;
ubi_rb_for_each_entry(p, e, root, u.rb) {
- if (e->pnum < UBI_FM_MAX_START && e->ec < max_ec) {
+ if (e->pnum >= UBI_FM_MAX_START)
+ break;
+
+ if (e->ec < max_ec) {
victim = e;
max_ec = e->ec;
}
@@ -74,6 +77,8 @@ static int anchor_pebs_avalible(struct rb_root *root)
ubi_rb_for_each_entry(p, e, root, u.rb)
if (e->pnum < UBI_FM_MAX_START)
return 1;
+ else
+ break;
return 0;
}
--
1.8.4.5
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 4/4] UBI: Fastmap: Optimize anchor PEB search
2014-11-30 12:22 ` [PATCH 4/4] UBI: Fastmap: Optimize anchor PEB search Richard Weinberger
@ 2014-12-05 15:23 ` Richard Weinberger
0 siblings, 0 replies; 6+ messages in thread
From: Richard Weinberger @ 2014-12-05 15:23 UTC (permalink / raw)
To: dedekind1; +Cc: linux-mtd, linux-kernel
Am 30.11.2014 um 13:22 schrieb Richard Weinberger:
> The UBI RB trees are sorted by the PEB number, hence
> we don't have to traverse the whole tree because ubi_rb_for_each_entry()
> walks the tree in sort order.
>
> Signed-off-by: Richard Weinberger <richard@nod.at>
Please ignore this patch. It is horrible wrong.
*facepalm*,
//richard
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2014-12-05 15:23 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-30 12:22 Fastmap update v2 (pile 7) Richard Weinberger
2014-11-30 12:22 ` [PATCH 1/4] UBI: Fastmap: Add blank line after declarations Richard Weinberger
2014-11-30 12:22 ` [PATCH 2/4] Add drivers/mtd/ubi/fastmap-wl.c to MAINTAINERS file Richard Weinberger
2014-11-30 12:22 ` [PATCH 3/4] UBI: Fastmap: Remove is_fm_block() Richard Weinberger
2014-11-30 12:22 ` [PATCH 4/4] UBI: Fastmap: Optimize anchor PEB search Richard Weinberger
2014-12-05 15:23 ` Richard Weinberger
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).