Lines Matching refs:cell

401 static void free_prison_cell(struct cache *cache, struct dm_bio_prison_cell *cell)  in free_prison_cell()  argument
403 dm_bio_prison_free_cell(cache->prison, cell); in free_prison_cell()
499 static void prealloc_put_cell(struct prealloc *p, struct dm_bio_prison_cell *cell) in prealloc_put_cell() argument
502 p->cell2 = cell; in prealloc_put_cell()
505 p->cell1 = cell; in prealloc_put_cell()
526 typedef void (*cell_free_fn)(void *context, struct dm_bio_prison_cell *cell);
843 struct dm_bio_prison_cell *cell) in inc_ds() argument
848 BUG_ON(!cell); in inc_ds()
904 static void inc_and_issue(struct cache *cache, struct bio *bio, struct dm_bio_prison_cell *cell) in inc_and_issue() argument
906 inc_ds(cache, bio, cell); in inc_and_issue()
1076 static void __cell_defer(struct cache *cache, struct dm_bio_prison_cell *cell) in __cell_defer() argument
1078 if (discard_or_flush(cell->holder)) { in __cell_defer()
1082 dm_cell_release(cache->prison, cell, &cache->deferred_bios); in __cell_defer()
1083 free_prison_cell(cache, cell); in __cell_defer()
1085 list_add_tail(&cell->user_list, &cache->deferred_cells); in __cell_defer()
1088 static void cell_defer(struct cache *cache, struct dm_bio_prison_cell *cell, bool holder) in cell_defer() argument
1092 if (!holder && dm_cell_promote_or_release(cache->prison, cell)) { in cell_defer()
1097 free_prison_cell(cache, cell); in cell_defer()
1102 __cell_defer(cache, cell); in cell_defer()
1108 static void cell_error_with_code(struct cache *cache, struct dm_bio_prison_cell *cell, int err) in cell_error_with_code() argument
1110 dm_cell_error(cache->prison, cell, err); in cell_error_with_code()
1111 free_prison_cell(cache, cell); in cell_error_with_code()
1114 static void cell_requeue(struct cache *cache, struct dm_bio_prison_cell *cell) in cell_requeue() argument
1116 cell_error_with_code(cache, cell, DM_ENDIO_REQUEUE); in cell_requeue()
1471 struct dm_bio_prison_cell *cell) in promote() argument
1486 mg->new_ocell = cell; in promote()
1495 struct dm_bio_prison_cell *cell) in writeback() argument
1509 mg->old_ocell = cell; in writeback()
1550 struct dm_bio_prison_cell *cell) in invalidate() argument
1564 mg->old_ocell = cell; in invalidate()
1573 struct dm_bio_prison_cell *cell) in discard() argument
1586 mg->new_ocell = cell; in discard()
1676 static void inc_fn(void *context, struct dm_bio_prison_cell *cell) in inc_fn() argument
1682 inc_ds(cache, cell->holder, cell); in inc_fn()
1683 if (bio_data_dir(cell->holder) == WRITE) in inc_fn()
1686 while ((bio = bio_list_pop(&cell->bios))) { in inc_fn()
1696 inc_ds(cache, bio, cell); in inc_fn()
1702 struct dm_bio_prison_cell *cell, in remap_cell_to_origin_clear_discard() argument
1715 dm_cell_visit_release(cache->prison, inc_fn, &detail, cell); in remap_cell_to_origin_clear_discard()
1719 remap_to_origin(cache, cell->holder); in remap_cell_to_origin_clear_discard()
1721 issue(cache, cell->holder); in remap_cell_to_origin_clear_discard()
1723 accounted_begin(cache, cell->holder); in remap_cell_to_origin_clear_discard()
1733 free_prison_cell(cache, cell); in remap_cell_to_origin_clear_discard()
1736 static void remap_cell_to_cache_dirty(struct cache *cache, struct dm_bio_prison_cell *cell, in remap_cell_to_cache_dirty() argument
1749 dm_cell_visit_release(cache->prison, inc_fn, &detail, cell); in remap_cell_to_cache_dirty()
1753 remap_to_cache(cache, cell->holder, cblock); in remap_cell_to_cache_dirty()
1755 issue(cache, cell->holder); in remap_cell_to_cache_dirty()
1757 accounted_begin(cache, cell->holder); in remap_cell_to_cache_dirty()
1769 free_prison_cell(cache, cell); in remap_cell_to_cache_dirty()
1778 struct dm_bio_prison_cell *cell; member
1795 l->structs, &l->cell); in cell_locker()
1816 ool.cell = NULL; in process_cell()
1879 ool.cell, new_ocell); in process_cell()
2000 struct dm_bio_prison_cell *cell, *tmp; in process_deferred_cells() local
2012 list_for_each_entry_safe(cell, tmp, &cells, user_list) { in process_deferred_cells()
2026 process_cell(cache, &structs, cell); in process_deferred_cells()
2204 struct dm_bio_prison_cell *cell, *tmp; in requeue_deferred_cells() local
2211 list_for_each_entry_safe(cell, tmp, &cells, user_list) in requeue_deferred_cells()
2212 cell_requeue(cache, cell); in requeue_deferred_cells()
3026 struct dm_bio_prison_cell *cell = NULL; in cache_map() local
3056 cell = alloc_prison_cell(cache); in cache_map()
3057 if (!cell) { in cache_map()
3062 r = bio_detain(cache, block, bio, cell, in cache_map()
3064 cache, &cell); in cache_map()
3077 cell_defer(cache, cell, true); in cache_map()
3083 cell_defer(cache, cell, false); in cache_map()
3097 cell_defer(cache, cell, true); in cache_map()
3104 inc_ds(cache, bio, cell); in cache_map()
3107 cell_defer(cache, cell, false); in cache_map()
3116 inc_ds(cache, bio, cell); in cache_map()
3117 cell_defer(cache, cell, false); in cache_map()
3120 remap_cell_to_cache_dirty(cache, cell, block, lookup_result.cblock, false); in cache_map()
3133 cell_defer(cache, cell, false); in cache_map()
3137 remap_cell_to_origin_clear_discard(cache, cell, block, false); in cache_map()
3144 cell_defer(cache, cell, false); in cache_map()