Lines Matching refs:bslab
88 struct bio_slab *bslab = kzalloc(sizeof(*bslab), GFP_KERNEL); in create_bio_slab() local
90 if (!bslab) in create_bio_slab()
93 snprintf(bslab->name, sizeof(bslab->name), "bio-%d", size); in create_bio_slab()
94 bslab->slab = kmem_cache_create(bslab->name, size, in create_bio_slab()
97 if (!bslab->slab) in create_bio_slab()
100 bslab->slab_ref = 1; in create_bio_slab()
101 bslab->slab_size = size; in create_bio_slab()
103 if (!xa_err(xa_store(&bio_slabs, size, bslab, GFP_KERNEL))) in create_bio_slab()
104 return bslab; in create_bio_slab()
106 kmem_cache_destroy(bslab->slab); in create_bio_slab()
109 kfree(bslab); in create_bio_slab()
121 struct bio_slab *bslab; in bio_find_or_create_slab() local
124 bslab = xa_load(&bio_slabs, size); in bio_find_or_create_slab()
125 if (bslab) in bio_find_or_create_slab()
126 bslab->slab_ref++; in bio_find_or_create_slab()
128 bslab = create_bio_slab(size); in bio_find_or_create_slab()
131 if (bslab) in bio_find_or_create_slab()
132 return bslab->slab; in bio_find_or_create_slab()
138 struct bio_slab *bslab = NULL; in bio_put_slab() local
143 bslab = xa_load(&bio_slabs, slab_size); in bio_put_slab()
144 if (WARN(!bslab, KERN_ERR "bio: unable to find slab!\n")) in bio_put_slab()
147 WARN_ON_ONCE(bslab->slab != bs->bio_slab); in bio_put_slab()
149 WARN_ON(!bslab->slab_ref); in bio_put_slab()
151 if (--bslab->slab_ref) in bio_put_slab()
156 kmem_cache_destroy(bslab->slab); in bio_put_slab()
157 kfree(bslab); in bio_put_slab()