summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/tree-log.c
diff options
context:
space:
mode:
authorLiu Bo <bo.liu@linux.alibaba.com>2018-04-02 13:59:48 -0400
committerDavid Sterba <dsterba@suse.com>2018-04-05 13:22:26 -0400
commitb98def7ca6e152ee55e36863dddf6f41f12d1dc6 (patch)
treea49615ca3fc4514942e4d81b4246622d36f6b28d /fs/btrfs/tree-log.c
parent80c0b4210a963e31529e15bf90519708ec947596 (diff)
Btrfs: bail out on error during replay_dir_deletes
If errors were returned by btrfs_next_leaf(), replay_dir_deletes needs to bail out, otherwise @ret would be forced to be 0 after 'break;' and the caller won't be aware of it. Fixes: e02119d5a7b4 ("Btrfs: Add a write ahead tree log to optimize synchronous operations") Reviewed-by: Nikolay Borisov <nborisov@suse.com> Signed-off-by: Liu Bo <bo.liu@linux.alibaba.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/tree-log.c')
-rw-r--r--fs/btrfs/tree-log.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
index c6bfa86e2f22..678154d4b78f 100644
--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -2352,8 +2352,10 @@ again:
2352 nritems = btrfs_header_nritems(path->nodes[0]); 2352 nritems = btrfs_header_nritems(path->nodes[0]);
2353 if (path->slots[0] >= nritems) { 2353 if (path->slots[0] >= nritems) {
2354 ret = btrfs_next_leaf(root, path); 2354 ret = btrfs_next_leaf(root, path);
2355 if (ret) 2355 if (ret == 1)
2356 break; 2356 break;
2357 else if (ret < 0)
2358 goto out;
2357 } 2359 }
2358 btrfs_item_key_to_cpu(path->nodes[0], &found_key, 2360 btrfs_item_key_to_cpu(path->nodes[0], &found_key,
2359 path->slots[0]); 2361 path->slots[0]);