Lines Matching full:cell

23 	struct rb_root cell;  member
54 prison->regions[i].cell = RB_ROOT; in dm_bio_prison_create()
81 struct dm_bio_prison_cell *cell) in dm_bio_prison_free_cell() argument
83 mempool_free(cell, &prison->cell_pool); in dm_bio_prison_free_cell()
89 struct dm_bio_prison_cell *cell) in __setup_new_cell() argument
91 memcpy(&cell->key, key, sizeof(cell->key)); in __setup_new_cell()
92 cell->holder = holder; in __setup_new_cell()
93 bio_list_init(&cell->bios); in __setup_new_cell()
148 struct dm_bio_prison_cell *cell = in __bio_detain() local
151 r = cmp_keys(key, &cell->key); in __bio_detain()
160 bio_list_add(&cell->bios, inmate); in __bio_detain()
161 *cell_result = cell; in __bio_detain()
185 r = __bio_detain(&prison->regions[l].cell, key, inmate, cell_prealloc, cell_result); in bio_detain()
214 struct dm_bio_prison_cell *cell, in __cell_release() argument
217 rb_erase(&cell->node, root); in __cell_release()
220 if (cell->holder) in __cell_release()
221 bio_list_add(inmates, cell->holder); in __cell_release()
222 bio_list_merge(inmates, &cell->bios); in __cell_release()
227 struct dm_bio_prison_cell *cell, in dm_cell_release() argument
230 unsigned l = lock_nr(&cell->key, prison->num_locks); in dm_cell_release()
233 __cell_release(&prison->regions[l].cell, cell, bios); in dm_cell_release()
242 struct dm_bio_prison_cell *cell, in __cell_release_no_holder() argument
245 rb_erase(&cell->node, root); in __cell_release_no_holder()
246 bio_list_merge(inmates, &cell->bios); in __cell_release_no_holder()
250 struct dm_bio_prison_cell *cell, in dm_cell_release_no_holder() argument
253 unsigned l = lock_nr(&cell->key, prison->num_locks); in dm_cell_release_no_holder()
257 __cell_release_no_holder(&prison->regions[l].cell, cell, inmates); in dm_cell_release_no_holder()
263 struct dm_bio_prison_cell *cell, blk_status_t error) in dm_cell_error() argument
269 dm_cell_release(prison, cell, &bios); in dm_cell_error()
281 struct dm_bio_prison_cell *cell) in dm_cell_visit_release() argument
283 unsigned l = lock_nr(&cell->key, prison->num_locks); in dm_cell_visit_release()
285 visit_fn(context, cell); in dm_cell_visit_release()
286 rb_erase(&cell->node, &prison->regions[l].cell); in dm_cell_visit_release()
292 struct dm_bio_prison_cell *cell) in __promote_or_release() argument
294 if (bio_list_empty(&cell->bios)) { in __promote_or_release()
295 rb_erase(&cell->node, root); in __promote_or_release()
299 cell->holder = bio_list_pop(&cell->bios); in __promote_or_release()
304 struct dm_bio_prison_cell *cell) in dm_cell_promote_or_release() argument
307 unsigned l = lock_nr(&cell->key, prison->num_locks); in dm_cell_promote_or_release()
310 r = __promote_or_release(&prison->regions[l].cell, cell); in dm_cell_promote_or_release()