lkml.org 
[lkml]   [2020]   [Jun]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.14 17/72] btrfs: do not ignore error from btrfs_next_leaf() when inserting checksums
    Date
    From: Filipe Manana <fdmanana@suse.com>

    [ Upstream commit 7e4a3f7ed5d54926ec671bbb13e171cfe179cc50 ]

    We are currently treating any non-zero return value from btrfs_next_leaf()
    the same way, by going to the code that inserts a new checksum item in the
    tree. However if btrfs_next_leaf() returns an error (a value < 0), we
    should just stop and return the error, and not behave as if nothing has
    happened, since in that case we do not have a way to know if there is a
    next leaf or we are currently at the last leaf already.

    So fix that by returning the error from btrfs_next_leaf().

    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/btrfs/file-item.c | 6 ++++--
    1 file changed, 4 insertions(+), 2 deletions(-)

    diff --git a/fs/btrfs/file-item.c b/fs/btrfs/file-item.c
    index 717d82d51bb1..edd5f152e448 100644
    --- a/fs/btrfs/file-item.c
    +++ b/fs/btrfs/file-item.c
    @@ -795,10 +795,12 @@ int btrfs_csum_file_blocks(struct btrfs_trans_handle *trans,
    nritems = btrfs_header_nritems(path->nodes[0]);
    if (!nritems || (path->slots[0] >= nritems - 1)) {
    ret = btrfs_next_leaf(root, path);
    - if (ret == 1)
    + if (ret < 0) {
    + goto out;
    + } else if (ret > 0) {
    found_next = 1;
    - if (ret != 0)
    goto insert;
    + }
    slot = path->slots[0];
    }
    btrfs_item_key_to_cpu(path->nodes[0], &found_key, slot);
    --
    2.25.1
    \
     
     \ /
      Last update: 2020-06-09 01:32    [W:4.129 / U:0.268 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site