diff options
author | Justin Maggard <jmaggard10@gmail.com> | 2017-06-09 11:09:35 -0700 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2017-07-20 17:43:43 +0200 |
commit | e2fd79c243f9939851d69d369a588953a6d070f7 (patch) | |
tree | 1375309db2d9f875eae2f22d7849a4665ac33582 /volumes.c | |
parent | d0379cc1d0a34313e7436cdc75e418515f9b03fc (diff) |
btrfs-progs: Fix an infinite loop in btrfs_next_bg
I've run into a couple filesystems where btrfs-find-root would spin
indefinitely.
If the first cache extent start location is 0, we end up in an infinite
loop in btrfs_next_bg(). Fix it by checking for that situation, and
jumping to the next bg if necessary.
Fixes: e2e0dae9 (btrfs-progs: volume: Fix a bug causing btrfs-find-root to skip first chunk)
Signed-off-by: Justin Maggard <jmaggard@netgear.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'volumes.c')
-rw-r--r-- | volumes.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -1279,6 +1279,8 @@ int btrfs_next_bg(struct btrfs_fs_info *fs_info, u64 *logical, *size = ce->size; return 0; } + if (!cur) + ce = next_cache_extent(ce); } return -ENOENT; |