Re: [long]2.5.44-mm3 UP went into unexpected trashing

Dipankar Sarma (dipankar@in.ibm.com)
Thu, 24 Oct 2002 18:08:09 +0530


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/