Lines Matching refs:ti
84 struct dm_target *ti; member
963 dm_endio_fn endio = tio->ti->type->end_io; in clone_endio()
969 r = endio(tio->ti, bio, error); in clone_endio()
1086 tio->ti->type->release_clone_rq(clone); in free_rq_clone()
1231 if (tio->ti) { in dm_done()
1232 rq_end_io = tio->ti->type->rq_end_io; in dm_done()
1235 r = rq_end_io(tio->ti, clone, error, &tio->info); in dm_done()
1345 static sector_t max_io_len_target_boundary(sector_t sector, struct dm_target *ti) in max_io_len_target_boundary() argument
1347 sector_t target_offset = dm_target_offset(ti, sector); in max_io_len_target_boundary()
1349 return ti->len - target_offset; in max_io_len_target_boundary()
1352 static sector_t max_io_len(sector_t sector, struct dm_target *ti) in max_io_len() argument
1354 sector_t len = max_io_len_target_boundary(sector, ti); in max_io_len()
1360 if (ti->max_io_len) { in max_io_len()
1361 offset = dm_target_offset(ti, sector); in max_io_len()
1362 if (unlikely(ti->max_io_len & (ti->max_io_len - 1))) in max_io_len()
1363 max_len = sector_div(offset, ti->max_io_len); in max_io_len()
1365 max_len = offset & (ti->max_io_len - 1); in max_io_len()
1366 max_len = ti->max_io_len - max_len; in max_io_len()
1375 int dm_set_target_max_io_len(struct dm_target *ti, sector_t len) in dm_set_target_max_io_len() argument
1380 ti->error = "Maximum size of target IO is too large"; in dm_set_target_max_io_len()
1384 ti->max_io_len = (uint32_t) len; in dm_set_target_max_io_len()
1436 struct dm_target *ti = tio->ti; in __map_bio() local
1447 r = ti->type->map(ti, clone); in __map_bio()
1502 struct dm_target *ti, in alloc_tio() argument
1512 tio->ti = ti; in alloc_tio()
1519 struct dm_target *ti, in __clone_and_map_simple_bio() argument
1522 struct dm_target_io *tio = alloc_tio(ci, ti, target_bio_nr); in __clone_and_map_simple_bio()
1534 static void __send_duplicate_bios(struct clone_info *ci, struct dm_target *ti, in __send_duplicate_bios() argument
1540 __clone_and_map_simple_bio(ci, ti, target_bio_nr, len); in __send_duplicate_bios()
1546 struct dm_target *ti; in __send_empty_flush() local
1549 while ((ti = dm_table_get_target(ci->map, target_nr++))) in __send_empty_flush()
1550 __send_duplicate_bios(ci, ti, ti->num_flush_bios, NULL); in __send_empty_flush()
1555 static void __clone_and_map_data_bio(struct clone_info *ci, struct dm_target *ti, in __clone_and_map_data_bio() argument
1566 if (bio_data_dir(bio) == WRITE && ti->num_write_bios) in __clone_and_map_data_bio()
1567 num_target_bios = ti->num_write_bios(ti, bio); in __clone_and_map_data_bio()
1570 tio = alloc_tio(ci, ti, target_bio_nr); in __clone_and_map_data_bio()
1577 typedef unsigned (*get_num_bios_fn)(struct dm_target *ti);
1579 static unsigned get_num_discard_bios(struct dm_target *ti) in get_num_discard_bios() argument
1581 return ti->num_discard_bios; in get_num_discard_bios()
1584 static unsigned get_num_write_same_bios(struct dm_target *ti) in get_num_write_same_bios() argument
1586 return ti->num_write_same_bios; in get_num_write_same_bios()
1589 typedef bool (*is_split_required_fn)(struct dm_target *ti);
1591 static bool is_split_required_for_discard(struct dm_target *ti) in is_split_required_for_discard() argument
1593 return ti->split_discard_bios; in is_split_required_for_discard()
1600 struct dm_target *ti; in __send_changing_extent_only() local
1605 ti = dm_table_find_target(ci->map, ci->sector); in __send_changing_extent_only()
1606 if (!dm_target_is_valid(ti)) in __send_changing_extent_only()
1615 num_bios = get_num_bios ? get_num_bios(ti) : 0; in __send_changing_extent_only()
1619 if (is_split_required && !is_split_required(ti)) in __send_changing_extent_only()
1620 len = min((sector_t)ci->sector_count, max_io_len_target_boundary(ci->sector, ti)); in __send_changing_extent_only()
1622 len = min((sector_t)ci->sector_count, max_io_len(ci->sector, ti)); in __send_changing_extent_only()
1624 __send_duplicate_bios(ci, ti, num_bios, &len); in __send_changing_extent_only()
1649 struct dm_target *ti; in __split_and_process_non_flush() local
1657 ti = dm_table_find_target(ci->map, ci->sector); in __split_and_process_non_flush()
1658 if (!dm_target_is_valid(ti)) in __split_and_process_non_flush()
1661 len = min_t(sector_t, max_io_len(ci->sector, ti), ci->sector_count); in __split_and_process_non_flush()
1663 __clone_and_map_data_bio(ci, ti, ci->sector, &len); in __split_and_process_non_flush()
1722 struct dm_target *ti; in dm_merge_bvec() local
1729 ti = dm_table_find_target(map, bvm->bi_sector); in dm_merge_bvec()
1730 if (!dm_target_is_valid(ti)) in dm_merge_bvec()
1736 max_sectors = min(max_io_len(bvm->bi_sector, ti), in dm_merge_bvec()
1747 if (max_size && ti->type->merge) in dm_merge_bvec()
1748 max_size = ti->type->merge(ti, bvm, biovec, max_size); in dm_merge_bvec()
1889 tio->ti = NULL; in init_tio()
1957 struct dm_target *ti = tio->ti; in map_request() local
1962 r = ti->type->map_rq(ti, clone, &tio->info); in map_request()
1964 r = ti->type->clone_and_map_rq(ti, rq, &tio->info, &clone); in map_request()
1974 ti->type->release_clone_rq(clone); in map_request()
2089 struct dm_target *ti; in dm_request_fn() local
2110 ti = dm_table_find_target(map, pos); in dm_request_fn()
2111 if (!dm_target_is_valid(ti)) { in dm_request_fn()
2127 if (ti->type->busy && ti->type->busy(ti)) in dm_request_fn()
2134 tio->ti = ti; in dm_request_fn()
2496 static int dm_device_merge_is_compulsory(struct dm_target *ti, in dm_device_merge_is_compulsory() argument
2513 struct dm_target *ti; in dm_table_merge_is_optional() local
2516 ti = dm_table_get_target(table, i++); in dm_table_merge_is_optional()
2518 if (ti->type->iterate_devices && in dm_table_merge_is_optional()
2519 ti->type->iterate_devices(ti, dm_device_merge_is_compulsory, NULL)) in dm_table_merge_is_optional()
2713 struct dm_target *ti; in dm_mq_queue_rq() local
2721 ti = dm_table_find_target(map, pos); in dm_mq_queue_rq()
2722 if (!dm_target_is_valid(ti)) { in dm_mq_queue_rq()
2734 if (ti->type->busy && ti->type->busy(ti)) in dm_mq_queue_rq()
2746 tio->ti = ti; in dm_mq_queue_rq()
3523 int dm_suspended(struct dm_target *ti) in dm_suspended() argument
3525 return dm_suspended_md(dm_table_get_md(ti->table)); in dm_suspended()
3529 int dm_noflush_suspending(struct dm_target *ti) in dm_noflush_suspending() argument
3531 return __noflush_suspending(dm_table_get_md(ti->table)); in dm_noflush_suspending()