On 8/13/2013 7:29 PM, Tejun Heo wrote: > Hello, > > On Tue, Aug 13, 2013 at 06:53:32PM -0400, Chris Metcalf wrote: >> int lru_add_drain_all(void) >> { >> - return schedule_on_each_cpu(lru_add_drain_per_cpu); >> + return schedule_on_each_cpu_cond(lru_add_drain_per_cpu, >> + lru_add_drain_cond, NULL); > It won't nest and doing it simultaneously won't buy anything, right? Correct on both counts, I think. > Wouldn't it be better to protect it with a mutex and define all > necessary resources statically (yeah, cpumask is pain in the ass and I > think we should un-deprecate cpumask_t for static use cases)? Then, > there'd be no allocation to worry about on the path. If allocation is a real problem on this path, I think this is probably OK, though I don't want to speak for Andrew. You could just guard it with a trylock and any caller that tried to start it while it was locked could just return happy that it was going on. I'll put out a version that does that and see how that looks for comparison's sake. -- Chris Metcalf, Tilera Corp. http://www.tilera.com -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>