diff --git a/[refs] b/[refs] index 7f13c5997d63..4ad634c12a4a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2ecb9e633c5057d1203a59ef3e5c3aaea37c402e +refs/heads/master: 8a14342683b1e3adcf5f78660a42fcbd95b44a35 diff --git a/trunk/fs/buffer.c b/trunk/fs/buffer.c index 36c7253bea72..11ca6eb46a33 100644 --- a/trunk/fs/buffer.c +++ b/trunk/fs/buffer.c @@ -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,