btrfs: handle btrfs_search_slot failure in replace_path
authorJosef Bacik <josef@toxicpanda.com>
Fri, 12 Mar 2021 20:25:23 +0000 (15:25 -0500)
committerDavid Sterba <dsterba@suse.com>
Mon, 19 Apr 2021 15:25:21 +0000 (17:25 +0200)
The search can fail for various reasons, in case of errors there's no
cleanup to be done so we can pass the error to the caller, adjusting for
the case where the key is not found and search slot returns 1.

Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
[ update changelog ]
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/relocation.c

index f1702157532a94f2f3aa4f2e6c2db1006540c90e..b62f5e46cf340b61b76e7420698f7ec12a74f57b 100644 (file)
@@ -1323,7 +1323,11 @@ again:
                path->lowest_level = level;
                ret = btrfs_search_slot(trans, src, &key, path, 0, 1);
                path->lowest_level = 0;
-               BUG_ON(ret);
+               if (ret) {
+                       if (ret > 0)
+                               ret = -ENOENT;
+                       break;
+               }
 
                /*
                 * Info qgroup to trace both subtrees.