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 f170215..b62f5e4 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.