diff options
Diffstat (limited to 'fs/btrfs')
| -rw-r--r-- | fs/btrfs/async-thread.c | 14 | ||||
| -rw-r--r-- | fs/btrfs/extent-tree.c | 2 | 
2 files changed, 15 insertions, 1 deletions
diff --git a/fs/btrfs/async-thread.c b/fs/btrfs/async-thread.c index 04fb9702d14..d82efd722a4 100644 --- a/fs/btrfs/async-thread.c +++ b/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/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 64e14ddf623..677d5e774fa 100644 --- a/fs/btrfs/extent-tree.c +++ b/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:  |