diff options
author | Shmulik Ladkani <shmulik.ladkani@gmail.com> | 2012-07-04 04:06:04 -0400 |
---|---|---|
committer | Artem Bityutskiy <Artem.Bityutskiy@linux.intel.com> | 2012-07-18 07:30:34 -0400 |
commit | 87e773c95eb0b363f2efcc7aff8a347dc18925d0 (patch) | |
tree | 76e802802a29567559f4d12d9c4d0ac8cdd63cfb /drivers/mtd/ubi/vmt.c | |
parent | 5c669a5bd8c0f0567127128990d01f9ae320a9ef (diff) |
UBI: harmonize the update of ubi->beb_rsvd_pebs
Currently, there are several locations where an attempt to reserve more
PEBs for bad PEB handling is made, with the same code being duplicated.
Harmonize it by introducing 'ubi_update_reserved()'.
Also, improve the debug message issued, making it more descriptive.
Artem: amended the patch a little.
Signed-off-by: Shmulik Ladkani <shmulik.ladkani@gmail.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@linux.intel.com>
Diffstat (limited to 'drivers/mtd/ubi/vmt.c')
-rw-r--r-- | drivers/mtd/ubi/vmt.c | 20 |
1 files changed, 2 insertions, 18 deletions
diff --git a/drivers/mtd/ubi/vmt.c b/drivers/mtd/ubi/vmt.c index 0669cff8ac3c..9169e58c262e 100644 --- a/drivers/mtd/ubi/vmt.c +++ b/drivers/mtd/ubi/vmt.c | |||
@@ -443,15 +443,7 @@ int ubi_remove_volume(struct ubi_volume_desc *desc, int no_vtbl) | |||
443 | spin_lock(&ubi->volumes_lock); | 443 | spin_lock(&ubi->volumes_lock); |
444 | ubi->rsvd_pebs -= reserved_pebs; | 444 | ubi->rsvd_pebs -= reserved_pebs; |
445 | ubi->avail_pebs += reserved_pebs; | 445 | ubi->avail_pebs += reserved_pebs; |
446 | i = ubi->beb_rsvd_level - ubi->beb_rsvd_pebs; | 446 | ubi_update_reserved(ubi); |
447 | if (i > 0) { | ||
448 | i = ubi->avail_pebs >= i ? i : ubi->avail_pebs; | ||
449 | ubi->avail_pebs -= i; | ||
450 | ubi->rsvd_pebs += i; | ||
451 | ubi->beb_rsvd_pebs += i; | ||
452 | if (i > 0) | ||
453 | ubi_msg("reserve more %d PEBs", i); | ||
454 | } | ||
455 | ubi->vol_count -= 1; | 447 | ubi->vol_count -= 1; |
456 | spin_unlock(&ubi->volumes_lock); | 448 | spin_unlock(&ubi->volumes_lock); |
457 | 449 | ||
@@ -558,15 +550,7 @@ int ubi_resize_volume(struct ubi_volume_desc *desc, int reserved_pebs) | |||
558 | spin_lock(&ubi->volumes_lock); | 550 | spin_lock(&ubi->volumes_lock); |
559 | ubi->rsvd_pebs += pebs; | 551 | ubi->rsvd_pebs += pebs; |
560 | ubi->avail_pebs -= pebs; | 552 | ubi->avail_pebs -= pebs; |
561 | pebs = ubi->beb_rsvd_level - ubi->beb_rsvd_pebs; | 553 | ubi_update_reserved(ubi); |
562 | if (pebs > 0) { | ||
563 | pebs = ubi->avail_pebs >= pebs ? pebs : ubi->avail_pebs; | ||
564 | ubi->avail_pebs -= pebs; | ||
565 | ubi->rsvd_pebs += pebs; | ||
566 | ubi->beb_rsvd_pebs += pebs; | ||
567 | if (pebs > 0) | ||
568 | ubi_msg("reserve more %d PEBs", pebs); | ||
569 | } | ||
570 | for (i = 0; i < reserved_pebs; i++) | 554 | for (i = 0; i < reserved_pebs; i++) |
571 | new_mapping[i] = vol->eba_tbl[i]; | 555 | new_mapping[i] = vol->eba_tbl[i]; |
572 | kfree(vol->eba_tbl); | 556 | kfree(vol->eba_tbl); |