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()
92 if (!bslab->slab) in create_bio_slab()
95 bslab->slab_ref = 1; in create_bio_slab()
96 bslab->slab_size = size; in create_bio_slab()
98 if (!xa_err(xa_store(&bio_slabs, size, bslab, GFP_KERNEL))) in create_bio_slab()
99 return bslab; in create_bio_slab()
101 kmem_cache_destroy(bslab->slab); in create_bio_slab()
104 kfree(bslab); in create_bio_slab()
116 struct bio_slab *bslab; in bio_find_or_create_slab() local
119 bslab = xa_load(&bio_slabs, size); in bio_find_or_create_slab()
120 if (bslab) in bio_find_or_create_slab()
121 bslab->slab_ref++; in bio_find_or_create_slab()
123 bslab = create_bio_slab(size); in bio_find_or_create_slab()
126 if (bslab) in bio_find_or_create_slab()
127 return bslab->slab; in bio_find_or_create_slab()
133 struct bio_slab *bslab = NULL; in bio_put_slab() local
138 bslab = xa_load(&bio_slabs, slab_size); in bio_put_slab()
139 if (WARN(!bslab, KERN_ERR "bio: unable to find slab!\n")) in bio_put_slab()
142 WARN_ON_ONCE(bslab->slab != bs->bio_slab); in bio_put_slab()
144 WARN_ON(!bslab->slab_ref); in bio_put_slab()
146 if (--bslab->slab_ref) in bio_put_slab()
151 kmem_cache_destroy(bslab->slab); in bio_put_slab()
152 kfree(bslab); in bio_put_slab()