/linux-master/drivers/md/ |
H A D | dm-bio-prison-v2.c | 9 #include "dm-bio-prison-v2.h" 39 struct dm_bio_prison_v2 *prison = kzalloc(sizeof(*prison), GFP_KERNEL); local 42 if (!prison) 45 prison->wq = wq; 46 spin_lock_init(&prison->lock); 48 ret = mempool_init_slab_pool(&prison->cell_pool, MIN_CELLS, _cell_cache); 50 kfree(prison); 54 prison->cells = RB_ROOT; 56 return prison; 60 dm_bio_prison_destroy_v2(struct dm_bio_prison_v2 *prison) argument 67 dm_bio_prison_alloc_cell_v2(struct dm_bio_prison_v2 *prison, gfp_t gfp) argument 73 dm_bio_prison_free_cell_v2(struct dm_bio_prison_v2 *prison, struct dm_bio_prison_cell_v2 *cell) argument 115 __find_or_insert(struct dm_bio_prison_v2 *prison, struct dm_cell_key_v2 *key, struct dm_bio_prison_cell_v2 *cell_prealloc, struct dm_bio_prison_cell_v2 **result) argument 150 __get(struct dm_bio_prison_v2 *prison, struct dm_cell_key_v2 *key, unsigned int lock_level, struct bio *inmate, struct dm_bio_prison_cell_v2 *cell_prealloc, struct dm_bio_prison_cell_v2 **cell) argument 173 dm_cell_get_v2(struct dm_bio_prison_v2 *prison, struct dm_cell_key_v2 *key, unsigned int lock_level, struct bio *inmate, struct dm_bio_prison_cell_v2 *cell_prealloc, struct dm_bio_prison_cell_v2 **cell_result) argument 190 __put(struct dm_bio_prison_v2 *prison, struct dm_bio_prison_cell_v2 *cell) argument 212 dm_cell_put_v2(struct dm_bio_prison_v2 *prison, struct dm_bio_prison_cell_v2 *cell) argument 226 __lock(struct dm_bio_prison_v2 *prison, struct dm_cell_key_v2 *key, unsigned int lock_level, struct dm_bio_prison_cell_v2 *cell_prealloc, struct dm_bio_prison_cell_v2 **cell_result) argument 257 dm_cell_lock_v2(struct dm_bio_prison_v2 *prison, struct dm_cell_key_v2 *key, unsigned int lock_level, struct dm_bio_prison_cell_v2 *cell_prealloc, struct dm_bio_prison_cell_v2 **cell_result) argument 273 __quiesce(struct dm_bio_prison_v2 *prison, struct dm_bio_prison_cell_v2 *cell, struct work_struct *continuation) argument 283 dm_cell_quiesce_v2(struct dm_bio_prison_v2 *prison, struct dm_bio_prison_cell_v2 *cell, struct work_struct *continuation) argument 293 __promote(struct dm_bio_prison_v2 *prison, struct dm_bio_prison_cell_v2 *cell, unsigned int new_lock_level) argument 304 dm_cell_lock_promote_v2(struct dm_bio_prison_v2 *prison, struct dm_bio_prison_cell_v2 *cell, unsigned int new_lock_level) argument 318 __unlock(struct dm_bio_prison_v2 *prison, struct dm_bio_prison_cell_v2 *cell, struct bio_list *bios) argument 336 dm_cell_unlock_v2(struct dm_bio_prison_v2 *prison, struct dm_bio_prison_cell_v2 *cell, struct bio_list *bios) argument [all...] |
H A D | dm-bio-prison-v1.h | 20 * Sometimes we can't deal with a bio straight away. We put them in prison 61 void dm_bio_prison_destroy(struct dm_bio_prison *prison); 65 * Eventually all bio prison clients should manage their own cell memory. 70 struct dm_bio_prison_cell *dm_bio_prison_alloc_cell(struct dm_bio_prison *prison, 72 void dm_bio_prison_free_cell(struct dm_bio_prison *prison, 81 int dm_get_cell(struct dm_bio_prison *prison, 97 int dm_bio_detain(struct dm_bio_prison *prison, 103 void dm_cell_release(struct dm_bio_prison *prison, 106 void dm_cell_release_no_holder(struct dm_bio_prison *prison, 109 void dm_cell_error(struct dm_bio_prison *prison, [all...] |
H A D | dm-bio-prison-v2.h | 24 * Sometimes we can't deal with a bio straight away. We put them in prison 58 void dm_bio_prison_destroy_v2(struct dm_bio_prison_v2 *prison); 62 * Eventually all bio prison clients should manage their own cell memory. 67 struct dm_bio_prison_cell_v2 *dm_bio_prison_alloc_cell_v2(struct dm_bio_prison_v2 *prison, 69 void dm_bio_prison_free_cell_v2(struct dm_bio_prison_v2 *prison, 88 bool dm_cell_get_v2(struct dm_bio_prison_v2 *prison, 99 bool dm_cell_put_v2(struct dm_bio_prison_v2 *prison, 116 int dm_cell_lock_v2(struct dm_bio_prison_v2 *prison, 122 void dm_cell_quiesce_v2(struct dm_bio_prison_v2 *prison, 134 int dm_cell_lock_promote_v2(struct dm_bio_prison_v2 *prison, [all...] |
H A D | dm-bio-prison-v1.c | 9 #include "dm-bio-prison-v1.h" 10 #include "dm-bio-prison-v2.h" 44 struct dm_bio_prison *prison; local 47 prison = kzalloc(struct_size(prison, regions, num_locks), GFP_KERNEL); 48 if (!prison) 50 prison->num_locks = num_locks; 52 for (i = 0; i < prison->num_locks; i++) { 53 spin_lock_init(&prison->regions[i].lock); 54 prison 67 dm_bio_prison_destroy(struct dm_bio_prison *prison) argument 74 dm_bio_prison_alloc_cell(struct dm_bio_prison *prison, gfp_t gfp) argument 80 dm_bio_prison_free_cell(struct dm_bio_prison *prison, struct dm_bio_prison_cell *cell) argument 175 bio_detain(struct dm_bio_prison *prison, struct dm_cell_key *key, struct bio *inmate, struct dm_bio_prison_cell *cell_prealloc, struct dm_bio_prison_cell **cell_result) argument 191 dm_bio_detain(struct dm_bio_prison *prison, struct dm_cell_key *key, struct bio *inmate, struct dm_bio_prison_cell *cell_prealloc, struct dm_bio_prison_cell **cell_result) argument 201 dm_get_cell(struct dm_bio_prison *prison, struct dm_cell_key *key, struct dm_bio_prison_cell *cell_prealloc, struct dm_bio_prison_cell **cell_result) argument 226 dm_cell_release(struct dm_bio_prison *prison, struct dm_bio_prison_cell *cell, struct bio_list *bios) argument 249 dm_cell_release_no_holder(struct dm_bio_prison *prison, struct dm_bio_prison_cell *cell, struct bio_list *inmates) argument 262 dm_cell_error(struct dm_bio_prison *prison, struct dm_bio_prison_cell *cell, blk_status_t error) argument 278 dm_cell_visit_release(struct dm_bio_prison *prison, void (*visit_fn)(void *, struct dm_bio_prison_cell *), void *context, struct dm_bio_prison_cell *cell) argument 303 dm_cell_promote_or_release(struct dm_bio_prison *prison, struct dm_bio_prison_cell *cell) argument [all...] |
H A D | Makefile | 19 dm-bio-prison-y += dm-bio-prison-v1.o dm-bio-prison-v2.o 52 obj-$(CONFIG_DM_BIO_PRISON) += dm-bio-prison.o
|
H A D | dm-cache-target.c | 9 #include "dm-bio-prison-v2.h" 374 struct dm_bio_prison_v2 *prison; member in struct:cache 467 return dm_bio_prison_alloc_cell_v2(cache->prison, GFP_NOIO); 472 dm_bio_prison_free_cell_v2(cache->prison, cell); 588 r = dm_cell_get_v2(cache->prison, &key, lock_level(bio), bio, cell_prealloc, &cell); 1075 dm_cell_quiesce_v2(mg->cache->prison, mg->cell, &mg->k.ws); 1118 if (pb->cell && dm_cell_put_v2(cache->prison, pb->cell)) 1219 if (dm_cell_unlock_v2(cache->prison, mg->cell, &bios)) 1327 r = dm_cell_lock_promote_v2(mg->cache->prison, mg->cell, 1408 r = dm_cell_lock_v2(cache->prison, [all...] |
H A D | dm-thin.c | 9 #include "dm-bio-prison-v1.h" 250 struct dm_bio_prison *prison; member in struct:pool 450 * Allocate a cell from the prison's mempool. 453 cell_prealloc = dm_bio_prison_alloc_cell(pool->prison, GFP_NOIO); 455 r = dm_bio_detain(pool->prison, key, bio, cell_prealloc, cell_result); 461 dm_bio_prison_free_cell(pool->prison, cell_prealloc); 471 dm_cell_release(pool->prison, cell, bios); 472 dm_bio_prison_free_cell(pool->prison, cell); 480 dm_cell_visit_release(pool->prison, fn, context, cell); 481 dm_bio_prison_free_cell(pool->prison, cel [all...] |