Lines Matching refs:bslab
83 struct bio_slab *bslab = kzalloc(sizeof(*bslab), GFP_KERNEL); in create_bio_slab() local
85 if (!bslab) in create_bio_slab()
88 snprintf(bslab->name, sizeof(bslab->name), "bio-%d", size); in create_bio_slab()
89 bslab->slab = kmem_cache_create(bslab->name, size, in create_bio_slab()
91 if (!bslab->slab) in create_bio_slab()
94 bslab->slab_ref = 1; in create_bio_slab()
95 bslab->slab_size = size; in create_bio_slab()
97 if (!xa_err(xa_store(&bio_slabs, size, bslab, GFP_KERNEL))) in create_bio_slab()
98 return bslab; in create_bio_slab()
100 kmem_cache_destroy(bslab->slab); in create_bio_slab()
103 kfree(bslab); in create_bio_slab()
115 struct bio_slab *bslab; in bio_find_or_create_slab() local
118 bslab = xa_load(&bio_slabs, size); in bio_find_or_create_slab()
119 if (bslab) in bio_find_or_create_slab()
120 bslab->slab_ref++; in bio_find_or_create_slab()
122 bslab = create_bio_slab(size); in bio_find_or_create_slab()
125 if (bslab) in bio_find_or_create_slab()
126 return bslab->slab; in bio_find_or_create_slab()
132 struct bio_slab *bslab = NULL; in bio_put_slab() local
137 bslab = xa_load(&bio_slabs, slab_size); in bio_put_slab()
138 if (WARN(!bslab, KERN_ERR "bio: unable to find slab!\n")) in bio_put_slab()
141 WARN_ON_ONCE(bslab->slab != bs->bio_slab); in bio_put_slab()
143 WARN_ON(!bslab->slab_ref); in bio_put_slab()
145 if (--bslab->slab_ref) in bio_put_slab()
150 kmem_cache_destroy(bslab->slab); in bio_put_slab()
151 kfree(bslab); in bio_put_slab()