I would vote for ordering. The slab init code was changed to initialize
new fields... Allocating memory for slabs is another story. They depend on
the lru lists and the pagemap_lru_lock being setup... Has this happened
when slab storage is initialized? If not a call to do this in the slab init logic
would fix things. It could also be fixed using this fragment (slab.c):
+ /*
+ * We want the pagemap_lru_lock, in UP spin locks to not
+ * protect us in interrupt context... In SMP they do but,
+ * optimizating for speed, we process if we do not get it.
+ */
+ if (!(cachep->flags & SLAB_NO_REAP)) {
+#ifdef CONFIG_SMP
+ locked = spin_trylock(&pagemap_lru_lock);
+#else
+ locked = !in_interrupt() && spin_trylock(&pagemap_lru_lock);
+#endif
+ if (!locked && !in_interrupt())
+ goto opps1;
If there is some way to verify that the pagemap_lru_lock is ready. Note its
fine to just set locked to 0 and proceed - as long as this condition does not
last forever. Also this code is in a fastpath so efficient is good...
Thoughts?
Ed Tomlinson
-
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/