|
@@ -3078,7 +3078,7 @@ static void recalc_bh_state(void)
|
|
|
if (__get_cpu_var(bh_accounting).ratelimit++ < 4096)
|
|
|
return;
|
|
|
__get_cpu_var(bh_accounting).ratelimit = 0;
|
|
|
- for_each_cpu(i)
|
|
|
+ for_each_online_cpu(i)
|
|
|
tot += per_cpu(bh_accounting, i).nr;
|
|
|
buffer_heads_over_limit = (tot > max_buffer_heads);
|
|
|
}
|
|
@@ -3127,6 +3127,9 @@ static void buffer_exit_cpu(int cpu)
|
|
|
brelse(b->bhs[i]);
|
|
|
b->bhs[i] = NULL;
|
|
|
}
|
|
|
+ get_cpu_var(bh_accounting).nr += per_cpu(bh_accounting, cpu).nr;
|
|
|
+ per_cpu(bh_accounting, cpu).nr = 0;
|
|
|
+ put_cpu_var(bh_accounting);
|
|
|
}
|
|
|
|
|
|
static int buffer_cpu_notify(struct notifier_block *self,
|