1
0
Fork 0

UBIFS: fix assertion

The assertion was incorrect, because it did not take into
account free space.

This patch also amends the comments correspondingly, and
cleans them up a little.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
hifive-unleashed-5.1
Artem Bityutskiy 2008-08-25 18:32:57 +03:00
parent 4b5f2762ec
commit ad507653a3
1 changed files with 7 additions and 9 deletions

View File

@ -211,14 +211,8 @@ static const struct ubifs_lprops *scan_for_dirty(struct ubifs_info *c,
* dirty index heap, and it falls-back to LPT scanning if the heaps are empty * dirty index heap, and it falls-back to LPT scanning if the heaps are empty
* or do not have an LEB which satisfies the @min_space criteria. * or do not have an LEB which satisfies the @min_space criteria.
* *
* Note: * Note, LEBs which have less than dead watermark of free + dirty space are
* o LEBs which have less than dead watermark of dirty space are never picked * never picked by this function.
* by this function;
*
* Returns zero and the LEB properties of
* found dirty LEB in case of success, %-ENOSPC if no dirty LEB was found and a
* negative error code in case of other failures. The returned LEB is marked as
* "taken".
* *
* The additional @pick_free argument controls if this function has to return a * The additional @pick_free argument controls if this function has to return a
* free or freeable LEB if one is present. For example, GC must to set it to %1, * free or freeable LEB if one is present. For example, GC must to set it to %1,
@ -231,6 +225,10 @@ static const struct ubifs_lprops *scan_for_dirty(struct ubifs_info *c,
* *
* In addition @pick_free is set to %2 by the recovery process in order to * In addition @pick_free is set to %2 by the recovery process in order to
* recover gc_lnum in which case an index LEB must not be returned. * recover gc_lnum in which case an index LEB must not be returned.
*
* This function returns zero and the LEB properties of found dirty LEB in case
* of success, %-ENOSPC if no dirty LEB was found and a negative error code in
* case of other failures. The returned LEB is marked as "taken".
*/ */
int ubifs_find_dirty_leb(struct ubifs_info *c, struct ubifs_lprops *ret_lp, int ubifs_find_dirty_leb(struct ubifs_info *c, struct ubifs_lprops *ret_lp,
int min_space, int pick_free) int min_space, int pick_free)
@ -317,7 +315,7 @@ int ubifs_find_dirty_leb(struct ubifs_info *c, struct ubifs_lprops *ret_lp,
lp = idx_lp; lp = idx_lp;
if (lp) { if (lp) {
ubifs_assert(lp->dirty >= c->dead_wm); ubifs_assert(lp->free + lp->dirty >= c->dead_wm);
goto found; goto found;
} }