Messages in this thread Patch in this message | | | Date | Thu, 24 Oct 2002 18:08:09 +0530 | From | Dipankar Sarma <> | Subject | Re: [long]2.5.44-mm3 UP went into unexpected trashing |
| |
On Thu, Oct 24, 2002 at 12:01:31PM +0000, Ed Tomlinson wrote: > Maneesh Soni wrote: > >> Oh. It was in -mm3 too. But something went wrong with the > >> dcache shrinking there. > > > > Backing out larger-cpu-masks.patch fixes this in -mm3 so, -mm4 should not > > give this problem. Basically callbacks are not getting processed due to > > incorrect rcu_cpu_mask. > > Would this affect UP systems? Had the dentry leak on a UP box with 512m > memory. About 400m ended up in unfreeable dentries...
It does affect UP systems.
A quick look at /proc/rcu in a leaky system indicated that somehow despite having a batch of RCUs, they are not getting started.
/* Fake initialization required by compiler */ @@ -106,10 +106,11 @@ static void rcu_start_batch(long newbatc rcu_ctrlblk.maxbatch = newbatch; } if (rcu_batch_before(rcu_ctrlblk.maxbatch, rcu_ctrlblk.curbatch) || - (rcu_ctrlblk.rcu_cpu_mask != 0)) { + (find_first_bit(rcu_ctrlblk.rcu_cpu_mask, NR_CPUS) != NR_CPUS)) { return; } - rcu_ctrlblk.rcu_cpu_mask = cpu_online_map; + memcpy(rcu_ctrlblk.rcu_cpu_mask, cpu_online_map, + sizeof(rcu_ctrlblk.rcu_cpu_mask)); }
Either find_first_bit() is not returning NR_CPUS when the bitmask has no bit set or memcpy is not working on the UP version of cpu_online_map. Will dig a little bit more.
Thanks -- Dipankar Sarma <dipankar@in.ibm.com> http://lse.sourceforge.net Linux Technology Center, IBM Software Lab, Bangalore, India. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |