From 8c6af1ab3a09b4cea8d972ae1b3799cb520a56be Mon Sep 17 00:00:00 2001 From: Chris Mason Date: Tue, 30 Sep 2008 19:24:06 -0400 Subject: [PATCH] --- yaml --- r: 128964 b: refs/heads/master c: 75ccf47d13bfb66de7faf596bfe497b9af7aaa40 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/btrfs/async-thread.c | 14 +++++++++++++- trunk/fs/btrfs/extent-tree.c | 2 ++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index a314717092c8..7f7886a7de2a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 45b8c9a8b1e15bf79c2c17ec217adf96785f8011 +refs/heads/master: 75ccf47d13bfb66de7faf596bfe497b9af7aaa40 diff --git a/trunk/fs/btrfs/async-thread.c b/trunk/fs/btrfs/async-thread.c index 04fb9702d14c..d82efd722a48 100644 --- a/trunk/fs/btrfs/async-thread.c +++ b/trunk/fs/btrfs/async-thread.c @@ -302,8 +302,20 @@ int btrfs_requeue_work(struct btrfs_work *work) spin_lock_irqsave(&worker->lock, flags); atomic_inc(&worker->num_pending); list_add_tail(&work->list, &worker->pending); - check_busy_worker(worker); + + /* by definition we're busy, take ourselves off the idle + * list + */ + if (worker->idle) { + spin_lock_irqsave(&worker->workers->lock, flags); + worker->idle = 0; + list_move_tail(&worker->worker_list, + &worker->workers->worker_list); + spin_unlock_irqrestore(&worker->workers->lock, flags); + } + spin_unlock_irqrestore(&worker->lock, flags); + out: return 0; } diff --git a/trunk/fs/btrfs/extent-tree.c b/trunk/fs/btrfs/extent-tree.c index 64e14ddf6232..677d5e774fad 100644 --- a/trunk/fs/btrfs/extent-tree.c +++ b/trunk/fs/btrfs/extent-tree.c @@ -5145,6 +5145,8 @@ int btrfs_read_block_groups(struct btrfs_root *root) ret = btrfs_add_block_group_cache(root->fs_info, cache); BUG_ON(ret); + + set_avail_alloc_bits(root->fs_info, cache->flags); } ret = 0; error: