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