Lines Matching refs:bslab
87 struct bio_slab *bslab = kzalloc(sizeof(*bslab), GFP_KERNEL); in create_bio_slab() local
89 if (!bslab) in create_bio_slab()
92 snprintf(bslab->name, sizeof(bslab->name), "bio-%d", size); in create_bio_slab()
93 bslab->slab = kmem_cache_create(bslab->name, size, in create_bio_slab()
96 if (!bslab->slab) in create_bio_slab()
99 bslab->slab_ref = 1; in create_bio_slab()
100 bslab->slab_size = size; in create_bio_slab()
102 if (!xa_err(xa_store(&bio_slabs, size, bslab, GFP_KERNEL))) in create_bio_slab()
103 return bslab; in create_bio_slab()
105 kmem_cache_destroy(bslab->slab); in create_bio_slab()
108 kfree(bslab); in create_bio_slab()
120 struct bio_slab *bslab; in bio_find_or_create_slab() local
123 bslab = xa_load(&bio_slabs, size); in bio_find_or_create_slab()
124 if (bslab) in bio_find_or_create_slab()
125 bslab->slab_ref++; in bio_find_or_create_slab()
127 bslab = create_bio_slab(size); in bio_find_or_create_slab()
130 if (bslab) in bio_find_or_create_slab()
131 return bslab->slab; in bio_find_or_create_slab()
137 struct bio_slab *bslab = NULL; in bio_put_slab() local
142 bslab = xa_load(&bio_slabs, slab_size); in bio_put_slab()
143 if (WARN(!bslab, KERN_ERR "bio: unable to find slab!\n")) in bio_put_slab()
146 WARN_ON_ONCE(bslab->slab != bs->bio_slab); in bio_put_slab()
148 WARN_ON(!bslab->slab_ref); in bio_put_slab()
150 if (--bslab->slab_ref) in bio_put_slab()
155 kmem_cache_destroy(bslab->slab); in bio_put_slab()
156 kfree(bslab); in bio_put_slab()