lkml.org 
[lkml]   [2008]   [Aug]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] UBIFS: fix assertion
    Date
    From: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>

    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>
    ---
    fs/ubifs/find.c | 16 +++++++---------
    1 files changed, 7 insertions(+), 9 deletions(-)

    diff --git a/fs/ubifs/find.c b/fs/ubifs/find.c
    index adee7b5..9fc55ae 100644
    --- a/fs/ubifs/find.c
    +++ b/fs/ubifs/find.c
    @@ -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
    * or do not have an LEB which satisfies the @min_space criteria.
    *
    - * Note:
    - * o LEBs which have less than dead watermark of dirty space are never picked
    - * 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".
    + * Note, LEBs which have less than dead watermark of free + dirty space are
    + * never picked by this function.
    *
    * 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,
    @@ -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
    * 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 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;

    if (lp) {
    - ubifs_assert(lp->dirty >= c->dead_wm);
    + ubifs_assert(lp->free + lp->dirty >= c->dead_wm);
    goto found;
    }

    --
    1.5.4.1


    \
     
     \ /
      Last update: 2008-08-31 15:19    [W:0.024 / U:94.912 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site