
From: Rusty Russell <rusty@rustcorp.com.au>

The IA64 hotplug CPU merge seems to have included some core changes: in
particular the recalc_bh_state() needs to sum for all (including offline)
cpus, since we don't empty the counters on CPU down.  The totals printed by
/proc/stat (the first loop) should include offline cpus, too (apparently
printing out the per-cpu lines for offline cpus confuses top).


---

 25-akpm/fs/buffer.c         |    2 +-
 25-akpm/fs/proc/proc_misc.c |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff -puN fs/buffer.c~fix-overzealous-use-of-online-cpu-iterators fs/buffer.c
--- 25/fs/buffer.c~fix-overzealous-use-of-online-cpu-iterators	2004-05-18 21:38:51.224370168 -0700
+++ 25-akpm/fs/buffer.c	2004-05-18 21:38:51.255365456 -0700
@@ -3025,7 +3025,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_online_cpu(i)
+	for_each_cpu(i)
 		tot += per_cpu(bh_accounting, i).nr;
 	buffer_heads_over_limit = (tot > max_buffer_heads);
 }
diff -puN fs/proc/proc_misc.c~fix-overzealous-use-of-online-cpu-iterators fs/proc/proc_misc.c
--- 25/fs/proc/proc_misc.c~fix-overzealous-use-of-online-cpu-iterators	2004-05-18 21:38:51.242367432 -0700
+++ 25-akpm/fs/proc/proc_misc.c	2004-05-18 21:38:51.256365304 -0700
@@ -371,7 +371,7 @@ int show_stat(struct seq_file *p, void *
 	if (wall_to_monotonic.tv_nsec)
 		--jif;
 
-	for_each_online_cpu(i) {
+	for_each_cpu(i) {
 		int j;
 
 		user += kstat_cpu(i).cpustat.user;

_
