From 25c4cf1557fa9d0a1bb2aa2df0a977356407699f Mon Sep 17 00:00:00 2001 From: Josef Bacik Date: Wed, 11 May 2011 17:30:53 -0400 Subject: [PATCH] --- yaml --- r: 253085 b: refs/heads/master c: 589d8ade83f07c0f11c8191c0ca309f34d7a2c14 h: refs/heads/master i: 253083: a5b90d92df4729f5afb4c9b9c2609bdf47575a7d v: v3 --- [refs] | 2 +- trunk/fs/btrfs/extent-tree.c | 19 +++++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index 4386e62e31e3..d9708bd5a372 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d82a6f1d7e8b61ed5996334d0db66651bb43641d +refs/heads/master: 589d8ade83f07c0f11c8191c0ca309f34d7a2c14 diff --git a/trunk/fs/btrfs/extent-tree.c b/trunk/fs/btrfs/extent-tree.c index 9f0a4e3bd8a9..96be62450318 100644 --- a/trunk/fs/btrfs/extent-tree.c +++ b/trunk/fs/btrfs/extent-tree.c @@ -378,15 +378,18 @@ static int caching_kthread(void *data) if (ret) break; - caching_ctl->progress = last; - btrfs_release_path(extent_root, path); - up_read(&fs_info->extent_commit_sem); - mutex_unlock(&caching_ctl->mutex); - if (btrfs_transaction_in_commit(fs_info)) - schedule_timeout(1); - else + if (need_resched() || + btrfs_next_leaf(extent_root, path)) { + caching_ctl->progress = last; + btrfs_release_path(extent_root, path); + up_read(&fs_info->extent_commit_sem); + mutex_unlock(&caching_ctl->mutex); cond_resched(); - goto again; + goto again; + } + leaf = path->nodes[0]; + nritems = btrfs_header_nritems(leaf); + continue; } if (key.objectid < block_group->key.objectid) {