Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 329060
b: refs/heads/master
c: 8beeb3b
h: refs/heads/master
v: v3
  • Loading branch information
Shmulik Ladkani authored and Artem Bityutskiy committed Sep 4, 2012
1 parent 928cc29 commit b737f1b
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: afe7d12b6d997ff8ceff02e405eae9ba54aa8350
refs/heads/master: 8beeb3bb9df8caba36ad3e4f226255dff9c92556
26 changes: 19 additions & 7 deletions trunk/drivers/mtd/ubi/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,25 @@ config MTD_UBI_BEB_RESERVE
help
If the MTD device admits of bad eraseblocks (e.g. NAND flash), UBI
reserves some amount of physical eraseblocks to handle new bad
eraseblocks. For example, if a flash physical eraseblock becomes bad,
UBI uses these reserved physical eraseblocks to relocate the bad one.
This option specifies how many physical eraseblocks will be reserved
for bad eraseblock handling (percents of total number of good flash
eraseblocks). If the underlying flash does not admit of bad
eraseblocks (e.g. NOR flash), this value is ignored and nothing is
reserved. Leave the default value if unsure.
eraseblocks. When a physical eraseblock becomes bad, UBI uses these
reserved physical eraseblocks to relocate the bad one. This
configuration option specifies how many physical eraseblocks will be
reserved for bad eraseblock handling (percents of total number of
good physical eraseblocks on this MTD partition). If the underlying
flash does not admit of bad eraseblocks (e.g. NOR flash), this value
is ignored and nothing is reserved. Leave the default value if
unsure.

config MTD_UBI_BEB_LIMIT
int "Percentage of maximum expected bad eraseblocks"
default 2
range 0 25
help
This option specifies the maximum bad physical eraseblocks UBI
expects on the UBI device (percents of total number of physical
eraseblocks on this MTD partition). If the underlying flash does not
admit of bad eraseblocks (e.g. NOR flash), this value is ignored.
Leave the default value if unsure.

config MTD_UBI_GLUEBI
tristate "MTD devices emulation driver (gluebi)"
Expand Down
12 changes: 11 additions & 1 deletion trunk/drivers/mtd/ubi/build.c
Original file line number Diff line number Diff line change
Expand Up @@ -607,8 +607,18 @@ static int io_init(struct ubi_device *ubi)
ubi->peb_count = mtd_div_by_eb(ubi->mtd->size, ubi->mtd);
ubi->flash_size = ubi->mtd->size;

if (mtd_can_have_bb(ubi->mtd))
if (mtd_can_have_bb(ubi->mtd)) {
ubi->bad_allowed = 1;
if (CONFIG_MTD_UBI_BEB_LIMIT > 0) {
int percent = CONFIG_MTD_UBI_BEB_LIMIT;
int limit = mult_frac(ubi->peb_count, percent, 100);

/* Round it up */
if (mult_frac(limit, 100, percent) < ubi->peb_count)
limit += 1;
ubi->bad_peb_limit = limit;
}
}

if (ubi->mtd->type == MTD_NORFLASH) {
ubi_assert(ubi->mtd->writesize == 1);
Expand Down
2 changes: 2 additions & 0 deletions trunk/drivers/mtd/ubi/ubi.h
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,7 @@ struct ubi_wl_entry;
* @flash_size: underlying MTD device size (in bytes)
* @peb_count: count of physical eraseblocks on the MTD device
* @peb_size: physical eraseblock size
* @bad_peb_limit: top limit of expected bad physical eraseblocks
* @bad_peb_count: count of bad physical eraseblocks
* @good_peb_count: count of good physical eraseblocks
* @corr_peb_count: count of corrupted physical eraseblocks (preserved and not
Expand Down Expand Up @@ -410,6 +411,7 @@ struct ubi_device {
int avail_pebs;
int beb_rsvd_pebs;
int beb_rsvd_level;
int bad_peb_limit;

int autoresize_vol_id;
int vtbl_slots;
Expand Down

0 comments on commit b737f1b

Please sign in to comment.