From: KAMEZAWA Hiroyuki for_each_cpu() actually iterates across all possible CPUs. We've had mistakes in the past where people were using for_each_cpu() where they should have been iterating across only online or present CPUs. This is inefficient and possibly buggy. We're renaming for_each_cpu() to for_each_possible_cpu() to avoid this in the future. This patch replaces for_each_cpu with for_each_possible_cpu. in xfs. Signed-off-by: KAMEZAWA Hiroyuki Signed-off-by: Andrew Morton --- fs/xfs/linux-2.6/xfs_stats.c | 4 ++-- fs/xfs/linux-2.6/xfs_sysctl.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff -puN fs/xfs/linux-2.6/xfs_stats.c~for_each_possible_cpu-xfs fs/xfs/linux-2.6/xfs_stats.c --- devel/fs/xfs/linux-2.6/xfs_stats.c~for_each_possible_cpu-xfs 2006-03-28 14:49:40.000000000 -0800 +++ devel-akpm/fs/xfs/linux-2.6/xfs_stats.c 2006-03-28 14:49:40.000000000 -0800 @@ -62,7 +62,7 @@ xfs_read_xfsstats( while (j < xstats[i].endpoint) { val = 0; /* sum over all cpus */ - for_each_cpu(c) + for_each_possible_cpu(c) val += *(((__u32*)&per_cpu(xfsstats, c) + j)); len += sprintf(buffer + len, " %u", val); j++; @@ -70,7 +70,7 @@ xfs_read_xfsstats( buffer[len++] = '\n'; } /* extra precision counters */ - for_each_cpu(i) { + for_each_possible_cpu(i) { xs_xstrat_bytes += per_cpu(xfsstats, i).xs_xstrat_bytes; xs_write_bytes += per_cpu(xfsstats, i).xs_write_bytes; xs_read_bytes += per_cpu(xfsstats, i).xs_read_bytes; diff -puN fs/xfs/linux-2.6/xfs_sysctl.c~for_each_possible_cpu-xfs fs/xfs/linux-2.6/xfs_sysctl.c --- devel/fs/xfs/linux-2.6/xfs_sysctl.c~for_each_possible_cpu-xfs 2006-03-28 14:49:40.000000000 -0800 +++ devel-akpm/fs/xfs/linux-2.6/xfs_sysctl.c 2006-03-28 14:49:40.000000000 -0800 @@ -38,7 +38,7 @@ xfs_stats_clear_proc_handler( if (!ret && write && *valp) { printk("XFS Clearing xfsstats\n"); - for_each_cpu(c) { + for_each_possible_cpu(c) { preempt_disable(); /* save vn_active, it's a universal truth! */ vn_active = per_cpu(xfsstats, c).vn_active; _