Lines Matching refs:cell
227 typedef void (*process_cell_fn)(struct thin_c *tc, struct dm_bio_prison_cell *cell);
468 struct dm_bio_prison_cell *cell, in cell_release() argument
471 dm_cell_release(pool->prison, cell, bios); in cell_release()
472 dm_bio_prison_free_cell(pool->prison, cell); in cell_release()
478 struct dm_bio_prison_cell *cell) in cell_visit_release() argument
480 dm_cell_visit_release(pool->prison, fn, context, cell); in cell_visit_release()
481 dm_bio_prison_free_cell(pool->prison, cell); in cell_visit_release()
485 struct dm_bio_prison_cell *cell, in cell_release_no_holder() argument
488 dm_cell_release_no_holder(pool->prison, cell, bios); in cell_release_no_holder()
489 dm_bio_prison_free_cell(pool->prison, cell); in cell_release_no_holder()
493 struct dm_bio_prison_cell *cell, blk_status_t error_code) in cell_error_with_code() argument
495 dm_cell_error(pool->prison, cell, error_code); in cell_error_with_code()
496 dm_bio_prison_free_cell(pool->prison, cell); in cell_error_with_code()
504 static void cell_error(struct pool *pool, struct dm_bio_prison_cell *cell) in cell_error() argument
506 cell_error_with_code(pool, cell, get_pool_io_error_code(pool)); in cell_error()
509 static void cell_success(struct pool *pool, struct dm_bio_prison_cell *cell) in cell_success() argument
511 cell_error_with_code(pool, cell, 0); in cell_success()
514 static void cell_requeue(struct pool *pool, struct dm_bio_prison_cell *cell) in cell_requeue() argument
516 cell_error_with_code(pool, cell, BLK_STS_DM_REQUEUE); in cell_requeue()
592 struct dm_bio_prison_cell *cell; member
623 struct dm_bio_prison_cell *cell, *tmp; in requeue_deferred_cells() local
631 list_for_each_entry_safe(cell, tmp, &cells, user_list) in requeue_deferred_cells()
632 cell_requeue(pool, cell); in requeue_deferred_cells()
815 struct dm_bio_prison_cell *cell; member
880 static void cell_defer_no_holder(struct thin_c *tc, struct dm_bio_prison_cell *cell) in cell_defer_no_holder() argument
887 cell_release_no_holder(pool, cell, &bios); in cell_defer_no_holder()
906 struct dm_bio_prison_cell *cell) in __inc_remap_and_issue_cell() argument
911 while ((bio = bio_list_pop(&cell->bios))) { in __inc_remap_and_issue_cell()
928 struct dm_bio_prison_cell *cell, in inc_remap_and_issue_cell() argument
944 &info, cell); in inc_remap_and_issue_cell()
955 cell_error(m->tc->pool, m->cell); in process_prepared_mapping_fail()
1000 cell_error(pool, m->cell); in process_prepared_mapping()
1012 cell_error(pool, m->cell); in process_prepared_mapping()
1023 inc_remap_and_issue_cell(tc, m->cell, m->data_block); in process_prepared_mapping()
1026 inc_all_io_entry(tc->pool, m->cell->holder); in process_prepared_mapping()
1027 remap_and_issue(tc, m->cell->holder, m->data_block); in process_prepared_mapping()
1028 inc_remap_and_issue_cell(tc, m->cell, m->data_block); in process_prepared_mapping()
1042 if (m->cell) in free_discard_mapping()
1043 cell_defer_no_holder(tc, m->cell); in free_discard_mapping()
1064 r = dm_thin_remove_range(tc->td, m->cell->key.block_begin, m->cell->key.block_end); in process_prepared_discard_no_passdown()
1071 cell_defer_no_holder(tc, m->cell); in process_prepared_discard_no_passdown()
1164 cell_defer_no_holder(tc, m->cell); in process_prepared_discard_passdown_pt1()
1177 cell_defer_no_holder(tc, m->cell); in process_prepared_discard_passdown_pt1()
1214 cell_defer_no_holder(tc, m->cell); in process_prepared_discard_passdown_pt2()
1312 struct dm_bio_prison_cell *cell, struct bio *bio, in schedule_copy() argument
1322 m->cell = cell; in schedule_copy()
1372 struct dm_bio_prison_cell *cell, struct bio *bio) in schedule_internal_copy() argument
1375 data_origin, data_dest, cell, bio, in schedule_internal_copy()
1380 dm_block_t data_block, struct dm_bio_prison_cell *cell, in schedule_zero() argument
1391 m->cell = cell; in schedule_zero()
1411 struct dm_bio_prison_cell *cell, struct bio *bio) in schedule_external_copy() argument
1419 virt_block, data_dest, cell, bio, in schedule_external_copy()
1424 virt_block, data_dest, cell, bio, in schedule_external_copy()
1428 schedule_zero(tc, virt_block, data_dest, cell, bio); in schedule_external_copy()
1627 static void retry_bios_on_resume(struct pool *pool, struct dm_bio_prison_cell *cell) in retry_bios_on_resume() argument
1635 cell_error_with_code(pool, cell, error); in retry_bios_on_resume()
1640 cell_release(pool, cell, &bios); in retry_bios_on_resume()
1659 m->cell = virt_cell; in process_discard_cell_no_passdown()
1722 m->cell = data_cell; in break_up_discard_bio()
1755 h->cell = virt_cell; in process_discard_cell_passdown()
1804 struct dm_bio_prison_cell *cell) in break_sharing() argument
1814 data_block, cell, bio); in break_sharing()
1818 retry_bios_on_resume(pool, cell); in break_sharing()
1824 cell_error(pool, cell); in break_sharing()
1830 struct dm_bio_prison_cell *cell) in __remap_and_issue_shared_cell() argument
1835 while ((bio = bio_list_pop(&cell->bios))) { in __remap_and_issue_shared_cell()
1850 struct dm_bio_prison_cell *cell, in remap_and_issue_shared_cell() argument
1861 &info, cell); in remap_and_issue_shared_cell()
1905 struct dm_bio_prison_cell *cell) in provision_block() argument
1916 cell_defer_no_holder(tc, cell); in provision_block()
1927 cell_defer_no_holder(tc, cell); in provision_block()
1936 schedule_external_copy(tc, block, data_block, cell, bio); in provision_block()
1938 schedule_zero(tc, block, data_block, cell, bio); in provision_block()
1942 retry_bios_on_resume(pool, cell); in provision_block()
1948 cell_error(pool, cell); in provision_block()
1953 static void process_cell(struct thin_c *tc, struct dm_bio_prison_cell *cell) in process_cell() argument
1957 struct bio *bio = cell->holder; in process_cell()
1962 cell_requeue(pool, cell); in process_cell()
1970 process_shared_bio(tc, bio, block, &lookup_result, cell); in process_cell()
1974 inc_remap_and_issue_cell(tc, cell, lookup_result.block); in process_cell()
1981 cell_defer_no_holder(tc, cell); in process_cell()
1996 provision_block(tc, bio, block, cell); in process_cell()
2002 cell_defer_no_holder(tc, cell); in process_cell()
2012 struct dm_bio_prison_cell *cell; in process_bio() local
2020 if (bio_detain(pool, &key, bio, &cell)) in process_bio()
2023 process_cell(tc, cell); in process_bio()
2027 struct dm_bio_prison_cell *cell) in __process_bio_read_only() argument
2039 if (cell) in __process_bio_read_only()
2040 cell_defer_no_holder(tc, cell); in __process_bio_read_only()
2044 if (cell) in __process_bio_read_only()
2045 inc_remap_and_issue_cell(tc, cell, lookup_result.block); in __process_bio_read_only()
2050 if (cell) in __process_bio_read_only()
2051 cell_defer_no_holder(tc, cell); in __process_bio_read_only()
2070 if (cell) in __process_bio_read_only()
2071 cell_defer_no_holder(tc, cell); in __process_bio_read_only()
2082 static void process_cell_read_only(struct thin_c *tc, struct dm_bio_prison_cell *cell) in process_cell_read_only() argument
2084 __process_bio_read_only(tc, cell->holder, cell); in process_cell_read_only()
2097 static void process_cell_success(struct thin_c *tc, struct dm_bio_prison_cell *cell) in process_cell_success() argument
2099 cell_success(tc->pool, cell); in process_cell_success()
2102 static void process_cell_fail(struct thin_c *tc, struct dm_bio_prison_cell *cell) in process_cell_fail() argument
2104 cell_error(tc->pool, cell); in process_cell_fail()
2260 struct dm_bio_prison_cell *cell, *tmp; in sort_cells() local
2262 list_for_each_entry_safe(cell, tmp, cells, user_list) { in sort_cells()
2266 pool->cell_sort_array[count++] = cell; in sort_cells()
2267 list_del(&cell->user_list); in sort_cells()
2270 sort(pool->cell_sort_array, count, sizeof(cell), cmp_cells, NULL); in sort_cells()
2279 struct dm_bio_prison_cell *cell; in process_thin_deferred_cells() local
2295 cell = pool->cell_sort_array[i]; in process_thin_deferred_cells()
2296 BUG_ON(!cell->holder); in process_thin_deferred_cells()
2313 if (bio_op(cell->holder) == REQ_OP_DISCARD) in process_thin_deferred_cells()
2314 pool->process_discard_cell(tc, cell); in process_thin_deferred_cells()
2316 pool->process_cell(tc, cell); in process_thin_deferred_cells()
2694 static void thin_defer_cell(struct thin_c *tc, struct dm_bio_prison_cell *cell) in thin_defer_cell() argument
2700 list_add_tail(&cell->user_list, &tc->deferred_cells); in thin_defer_cell()
2715 h->cell = NULL; in thin_hook_bio()
4368 if (h->cell) in thin_endio()
4369 cell_defer_no_holder(h->tc, h->cell); in thin_endio()