diff options
author | David Sterba <dsterba@suse.com> | 2017-07-21 19:15:57 +0200 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2017-07-21 19:15:57 +0200 |
commit | 93058e69596db4a3458a9e5e197c9373d5f57bf1 (patch) | |
tree | 1160a6bd7b110755d25a282559de03ded38549c6 /fs | |
parent | af373e8aa0563a1656d6a906349bea96f5f342f1 (diff) | |
parent | 96cbacc20519d67fcbe521ec42983a025cd10093 (diff) |
Merge branch 'ext/jeffm/lockup-find-free-ro-bg' into for-next-next-v4.14-20170721
Diffstat (limited to 'fs')
-rw-r--r-- | fs/btrfs/extent-tree.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index be3e43b1aa61..075015d12992 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c @@ -7575,6 +7575,10 @@ search: u64 offset; int cached; + /* If the block group is read-only, we can skip it entirely. */ + if (unlikely(block_group->ro)) + continue; + btrfs_grab_block_group(block_group, delalloc); search_start = block_group->key.objectid; @@ -7610,8 +7614,6 @@ have_block_group: if (unlikely(block_group->cached == BTRFS_CACHE_ERROR)) goto loop; - if (unlikely(block_group->ro)) - goto loop; /* * Ok we want to try and use the cluster allocator, so @@ -7825,6 +7827,7 @@ loop: failed_alloc = false; BUG_ON(index != get_block_group_index(block_group)); btrfs_release_block_group(block_group, delalloc); + cond_resched(); } up_read(&space_info->groups_sem); |