diff options
author | Filipe Manana <fdmanana@suse.com> | 2020-05-18 14:15:09 +0300 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2020-05-25 12:25:37 +0300 |
commit | 7e4a3f7ed5d54926ec671bbb13e171cfe179cc50 (patch) | |
tree | 994923b17316b87e3cc4aea3921f839c2f44a733 | |
parent | cc14600c1516f6c679cab1c503a34841d58050a6 (diff) | |
download | linux-7e4a3f7ed5d54926ec671bbb13e171cfe179cc50.tar.xz |
btrfs: do not ignore error from btrfs_next_leaf() when inserting checksums
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>
-rw-r--r-- | fs/btrfs/file-item.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/btrfs/file-item.c b/fs/btrfs/file-item.c index 687529c61d13..c3f3c25dda38 100644 --- a/fs/btrfs/file-item.c +++ b/fs/btrfs/file-item.c @@ -889,10 +889,12 @@ again: 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); |