]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - lib/idr.c
idr: create idr_layer_cache at boot time
[net-next-2.6.git] / lib / idr.c
index afbb0b1023d46cd5a3619175730c7ced7bc1e419..8368c81fcb7d21cd3d85c8c0880f918b9c1911f5 100644 (file)
--- a/lib/idr.c
+++ b/lib/idr.c
@@ -585,12 +585,11 @@ static void idr_cache_ctor(struct kmem_cache *idr_layer_cache, void *idr_layer)
        memset(idr_layer, 0, sizeof(struct idr_layer));
 }
 
-static  int init_id_cache(void)
+void __init idr_init_cache(void)
 {
-       if (!idr_layer_cache)
-               idr_layer_cache = kmem_cache_create("idr_layer_cache",
-                       sizeof(struct idr_layer), 0, 0, idr_cache_ctor);
-       return 0;
+       idr_layer_cache = kmem_cache_create("idr_layer_cache",
+                               sizeof(struct idr_layer), 0, SLAB_PANIC,
+                               idr_cache_ctor);
 }
 
 /**
@@ -602,7 +601,6 @@ static  int init_id_cache(void)
  */
 void idr_init(struct idr *idp)
 {
-       init_id_cache();
        memset(idp, 0, sizeof(struct idr));
        spin_lock_init(&idp->lock);
 }