diff options
Diffstat (limited to 'mm/pdflush.c')
| -rw-r--r-- | mm/pdflush.c | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/mm/pdflush.c b/mm/pdflush.c index f2caf96993f8..235ac440c44e 100644 --- a/mm/pdflush.c +++ b/mm/pdflush.c | |||
| @@ -58,14 +58,6 @@ static DEFINE_SPINLOCK(pdflush_lock); | |||
| 58 | int nr_pdflush_threads = 0; | 58 | int nr_pdflush_threads = 0; |
| 59 | 59 | ||
| 60 | /* | 60 | /* |
| 61 | * The max/min number of pdflush threads. R/W by sysctl at | ||
| 62 | * /proc/sys/vm/nr_pdflush_threads_max/min | ||
| 63 | */ | ||
| 64 | int nr_pdflush_threads_max __read_mostly = MAX_PDFLUSH_THREADS; | ||
| 65 | int nr_pdflush_threads_min __read_mostly = MIN_PDFLUSH_THREADS; | ||
| 66 | |||
| 67 | |||
| 68 | /* | ||
| 69 | * The time at which the pdflush thread pool last went empty | 61 | * The time at which the pdflush thread pool last went empty |
| 70 | */ | 62 | */ |
| 71 | static unsigned long last_empty_jifs; | 63 | static unsigned long last_empty_jifs; |
| @@ -76,7 +68,7 @@ static unsigned long last_empty_jifs; | |||
| 76 | * Thread pool management algorithm: | 68 | * Thread pool management algorithm: |
| 77 | * | 69 | * |
| 78 | * - The minimum and maximum number of pdflush instances are bound | 70 | * - The minimum and maximum number of pdflush instances are bound |
| 79 | * by nr_pdflush_threads_min and nr_pdflush_threads_max. | 71 | * by MIN_PDFLUSH_THREADS and MAX_PDFLUSH_THREADS. |
| 80 | * | 72 | * |
| 81 | * - If there have been no idle pdflush instances for 1 second, create | 73 | * - If there have been no idle pdflush instances for 1 second, create |
| 82 | * a new one. | 74 | * a new one. |
| @@ -142,13 +134,14 @@ static int __pdflush(struct pdflush_work *my_work) | |||
| 142 | * To throttle creation, we reset last_empty_jifs. | 134 | * To throttle creation, we reset last_empty_jifs. |
| 143 | */ | 135 | */ |
| 144 | if (time_after(jiffies, last_empty_jifs + 1 * HZ)) { | 136 | if (time_after(jiffies, last_empty_jifs + 1 * HZ)) { |
| 145 | if (list_empty(&pdflush_list) && | 137 | if (list_empty(&pdflush_list)) { |
| 146 | nr_pdflush_threads < nr_pdflush_threads_max) { | 138 | if (nr_pdflush_threads < MAX_PDFLUSH_THREADS) { |
| 147 | last_empty_jifs = jiffies; | 139 | last_empty_jifs = jiffies; |
| 148 | nr_pdflush_threads++; | 140 | nr_pdflush_threads++; |
| 149 | spin_unlock_irq(&pdflush_lock); | 141 | spin_unlock_irq(&pdflush_lock); |
| 150 | start_one_pdflush_thread(); | 142 | start_one_pdflush_thread(); |
| 151 | spin_lock_irq(&pdflush_lock); | 143 | spin_lock_irq(&pdflush_lock); |
| 144 | } | ||
| 152 | } | 145 | } |
| 153 | } | 146 | } |
| 154 | 147 | ||
| @@ -160,7 +153,7 @@ static int __pdflush(struct pdflush_work *my_work) | |||
| 160 | */ | 153 | */ |
| 161 | if (list_empty(&pdflush_list)) | 154 | if (list_empty(&pdflush_list)) |
| 162 | continue; | 155 | continue; |
| 163 | if (nr_pdflush_threads <= nr_pdflush_threads_min) | 156 | if (nr_pdflush_threads <= MIN_PDFLUSH_THREADS) |
| 164 | continue; | 157 | continue; |
| 165 | pdf = list_entry(pdflush_list.prev, struct pdflush_work, list); | 158 | pdf = list_entry(pdflush_list.prev, struct pdflush_work, list); |
| 166 | if (time_after(jiffies, pdf->when_i_went_to_sleep + 1 * HZ)) { | 159 | if (time_after(jiffies, pdf->when_i_went_to_sleep + 1 * HZ)) { |
| @@ -266,9 +259,9 @@ static int __init pdflush_init(void) | |||
| 266 | * Pre-set nr_pdflush_threads... If we fail to create, | 259 | * Pre-set nr_pdflush_threads... If we fail to create, |
| 267 | * the count will be decremented. | 260 | * the count will be decremented. |
| 268 | */ | 261 | */ |
| 269 | nr_pdflush_threads = nr_pdflush_threads_min; | 262 | nr_pdflush_threads = MIN_PDFLUSH_THREADS; |
| 270 | 263 | ||
| 271 | for (i = 0; i < nr_pdflush_threads_min; i++) | 264 | for (i = 0; i < MIN_PDFLUSH_THREADS; i++) |
| 272 | start_one_pdflush_thread(); | 265 | start_one_pdflush_thread(); |
| 273 | return 0; | 266 | return 0; |
| 274 | } | 267 | } |
