diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 4bd88b6b4865c2bfb01ff142baed0bed44d86ef6..0bb095bda01b72c4080e4897133b5169d04acd86 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c @@ -5751,6 +5751,14 @@ static noinline int find_free_extent(struct btrfs_fs_info *fs_info, */ if ((flags & extra) && !(block_group->flags & extra)) goto loop; + + /* + * This block group has different flags than we want. + * It's possible that we have MIXED_GROUP flag but no + * block group is mixed. Just skip such block group. + */ + btrfs_release_block_group(block_group, delalloc); + continue; } have_block_group: