• Josef Bacik's avatar
    Btrfs: cleanup error handling in build_backref_tree · 75bfb9af
    Josef Bacik authored
    When balance panics it tends to panic in the
    
    BUG_ON(!upper->checked);
    
    test, because it means it couldn't build the backref tree properly.  This is
    annoying to users and frankly a recoverable error, nothing in this function is
    actually fatal since it is just an in-memory building of the backrefs for a
    given bytenr.  So go through and change all the BUG_ON()'s to ASSERT()'s, and
    fix the BUG_ON(!upper->checked) thing to just return an error.
    
    This patch also fixes the error handling so it tears down the work we've done
    properly.  This code was horribly broken since we always just panic'ed instead
    of actually erroring out, so it needed to be completely re-worked.  With this
    patch my broken image no longer panics when I mount it.  Thanks,
    Signed-off-by: default avatarJosef Bacik <jbacik@fb.com>
    Signed-off-by: default avatarChris Mason <clm@fb.com>
    75bfb9af
relocation.c 110 KB