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>
This commit is contained in:

committed by
Artem Bityutskiy

parent
5c669a5bd8
commit
87e773c95e
@@ -91,6 +91,29 @@ int ubi_check_volume(struct ubi_device *ubi, int vol_id)
|
||||
return err;
|
||||
}
|
||||
|
||||
/**
|
||||
* ubi_update_reserved - update bad eraseblock handling accounting data.
|
||||
* @ubi: UBI device description object
|
||||
*
|
||||
* This function calculates the gap between current number of PEBs reserved for
|
||||
* bad eraseblock handling and the required level of PEBs that must be
|
||||
* reserved, and if necessary, reserves more PEBs to fill that gap, according
|
||||
* to availability. Should be called with ubi->volumes_lock held.
|
||||
*/
|
||||
void ubi_update_reserved(struct ubi_device *ubi)
|
||||
{
|
||||
int need = ubi->beb_rsvd_level - ubi->beb_rsvd_pebs;
|
||||
|
||||
if (need <= 0 || ubi->avail_pebs == 0)
|
||||
return;
|
||||
|
||||
need = min_t(int, need, ubi->avail_pebs);
|
||||
ubi->avail_pebs -= need;
|
||||
ubi->rsvd_pebs += need;
|
||||
ubi->beb_rsvd_pebs += need;
|
||||
ubi_msg("reserved more %d PEBs for bad PEB handling", need);
|
||||
}
|
||||
|
||||
/**
|
||||
* ubi_calculate_reserved - calculate how many PEBs must be reserved for bad
|
||||
* eraseblock handling.
|
||||
|
Reference in New Issue
Block a user