aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/async-thread.h
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2008-06-11 20:21:24 -0400
committerChris Mason <chris.mason@oracle.com>2008-09-25 11:04:03 -0400
commit35d8ba66294ff2a53c17337a1aa1ff6739492f41 (patch)
tree40297c7917bb0425e76030e54418a934b1225299 /fs/btrfs/async-thread.h
parentd05e5a4dad985acc938e62d9752c813647dedd9d (diff)
Btrfs: Worker thread optimizations
This changes the worker thread pool to maintain a list of idle threads, avoiding a complex search for a good thread to wake up. Threads have two states: idle - we try to reuse the last thread used in hopes of improving the batching ratios busy - each time a new work item is added to a busy task, the task is rotated to the end of the line. Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/async-thread.h')
-rw-r--r--fs/btrfs/async-thread.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/btrfs/async-thread.h b/fs/btrfs/async-thread.h
index 52fc9da0f9e7..3436ff897597 100644
--- a/fs/btrfs/async-thread.h
+++ b/fs/btrfs/async-thread.h
@@ -60,11 +60,12 @@ struct btrfs_workers {
60 /* max number of workers allowed. changed by btrfs_start_workers */ 60 /* max number of workers allowed. changed by btrfs_start_workers */
61 int max_workers; 61 int max_workers;
62 62
63 /* once a worker has this many requests or fewer, it is idle */
64 int idle_thresh;
65
63 /* list with all the work threads */ 66 /* list with all the work threads */
64 struct list_head worker_list; 67 struct list_head worker_list;
65 68 struct list_head idle_list;
66 /* the last worker thread to have something queued */
67 struct btrfs_worker_thread *last;
68 69
69 /* lock for finding the next worker thread to queue on */ 70 /* lock for finding the next worker thread to queue on */
70 spinlock_t lock; 71 spinlock_t lock;