diff options
Diffstat (limited to 'fs/btrfs/async-thread.c')
| -rw-r--r-- | fs/btrfs/async-thread.c | 14 | 
1 files changed, 14 insertions, 0 deletions
| diff --git a/fs/btrfs/async-thread.c b/fs/btrfs/async-thread.c index e0f071f6b5a7..63d197724519 100644 --- a/fs/btrfs/async-thread.c +++ b/fs/btrfs/async-thread.c @@ -86,6 +86,20 @@ btrfs_work_owner(struct btrfs_work *work)  	return work->wq->fs_info;  } +bool btrfs_workqueue_normal_congested(struct btrfs_workqueue *wq) +{ +	/* +	 * We could compare wq->normal->pending with num_online_cpus() +	 * to support "thresh == NO_THRESHOLD" case, but it requires +	 * moving up atomic_inc/dec in thresh_queue/exec_hook. Let's +	 * postpone it until someone needs the support of that case. +	 */ +	if (wq->normal->thresh == NO_THRESHOLD) +		return false; + +	return atomic_read(&wq->normal->pending) > wq->normal->thresh * 2; +} +  BTRFS_WORK_HELPER(worker_helper);  BTRFS_WORK_HELPER(delalloc_helper);  BTRFS_WORK_HELPER(flush_delalloc_helper); |