aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
Diffstat (limited to 'fs')
-rw-r--r--fs/btrfs/extent-tree.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 9f0a4e3bd8a9..96be62450318 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -378,15 +378,18 @@ again:
378 if (ret) 378 if (ret)
379 break; 379 break;
380 380
381 caching_ctl->progress = last; 381 if (need_resched() ||
382 btrfs_release_path(extent_root, path); 382 btrfs_next_leaf(extent_root, path)) {
383 up_read(&fs_info->extent_commit_sem); 383 caching_ctl->progress = last;
384 mutex_unlock(&caching_ctl->mutex); 384 btrfs_release_path(extent_root, path);
385 if (btrfs_transaction_in_commit(fs_info)) 385 up_read(&fs_info->extent_commit_sem);
386 schedule_timeout(1); 386 mutex_unlock(&caching_ctl->mutex);
387 else
388 cond_resched(); 387 cond_resched();
389 goto again; 388 goto again;
389 }
390 leaf = path->nodes[0];
391 nritems = btrfs_header_nritems(leaf);
392 continue;
390 } 393 }
391 394
392 if (key.objectid < block_group->key.objectid) { 395 if (key.objectid < block_group->key.objectid) {