.. | .. |
---|
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; |
---|