| .. | .. |
|---|
| 41 | 41 | struct workqueue_struct *fscache_object_wq; |
|---|
| 42 | 42 | struct workqueue_struct *fscache_op_wq; |
|---|
| 43 | 43 | |
|---|
| 44 | +DEFINE_PER_CPU(wait_queue_head_t, fscache_object_cong_wait); |
|---|
| 45 | + |
|---|
| 44 | 46 | /* these values serve as lower bounds, will be adjusted in fscache_init() */ |
|---|
| 45 | 47 | static unsigned fscache_object_max_active = 4; |
|---|
| 46 | 48 | static unsigned fscache_op_max_active = 2; |
|---|
| .. | .. |
|---|
| 136 | 138 | static int __init fscache_init(void) |
|---|
| 137 | 139 | { |
|---|
| 138 | 140 | unsigned int nr_cpus = num_possible_cpus(); |
|---|
| 141 | + unsigned int cpu; |
|---|
| 139 | 142 | int ret; |
|---|
| 140 | 143 | |
|---|
| 141 | 144 | fscache_object_max_active = |
|---|
| .. | .. |
|---|
| 158 | 161 | if (!fscache_op_wq) |
|---|
| 159 | 162 | goto error_op_wq; |
|---|
| 160 | 163 | |
|---|
| 164 | + for_each_possible_cpu(cpu) |
|---|
| 165 | + init_waitqueue_head(&per_cpu(fscache_object_cong_wait, cpu)); |
|---|
| 166 | + |
|---|
| 161 | 167 | ret = fscache_proc_init(); |
|---|
| 162 | 168 | if (ret < 0) |
|---|
| 163 | 169 | goto error_proc; |
|---|