Lines Matching refs:ti
195 struct dm_target *ti = dm_table_get_target(t, i); in dm_table_destroy() local
197 if (ti->type->dtr) in dm_table_destroy()
198 ti->type->dtr(ti); in dm_table_destroy()
200 dm_put_target_type(ti->type); in dm_table_destroy()
232 static int device_area_is_invalid(struct dm_target *ti, struct dm_dev *dev, in device_area_is_invalid() argument
246 dm_device_name(ti->table->md), bdev, in device_area_is_invalid()
262 dm_device_name(ti->table->md), in device_area_is_invalid()
279 dm_device_name(ti->table->md), in device_area_is_invalid()
291 dm_device_name(ti->table->md), in device_area_is_invalid()
299 dm_device_name(ti->table->md), in device_area_is_invalid()
367 int dm_get_device(struct dm_target *ti, const char *path, blk_mode_t mode, in dm_get_device() argument
373 struct dm_table *t = ti->table; in dm_get_device()
421 static int dm_set_device_limits(struct dm_target *ti, struct dm_dev *dev, in dm_set_device_limits() argument
430 dm_device_name(ti->table->md), bdev); in dm_set_device_limits()
439 dm_device_name(ti->table->md), bdev, in dm_set_device_limits()
449 if (!dm_target_has_integrity(ti->type)) in dm_set_device_limits()
457 void dm_put_device(struct dm_target *ti, struct dm_dev *d) in dm_put_device() argument
460 struct dm_table *t = ti->table; in dm_put_device()
491 static int adjoin(struct dm_table *t, struct dm_target *ti) in adjoin() argument
496 return !ti->begin; in adjoin()
499 return (ti->begin == (prev->begin + prev->len)); in adjoin()
633 struct dm_target *ti; in validate_hardware_logical_block_alignment() local
641 ti = dm_table_get_target(t, i); in validate_hardware_logical_block_alignment()
646 if (ti->type->iterate_devices) in validate_hardware_logical_block_alignment()
647 ti->type->iterate_devices(ti, dm_set_device_limits, in validate_hardware_logical_block_alignment()
654 if (remaining < ti->len && in validate_hardware_logical_block_alignment()
660 (unsigned short) ((next_target_start + ti->len) & in validate_hardware_logical_block_alignment()
670 (unsigned long long) ti->begin, in validate_hardware_logical_block_alignment()
671 (unsigned long long) ti->len, in validate_hardware_logical_block_alignment()
684 struct dm_target *ti; in dm_table_add_target() local
694 ti = t->targets + t->num_targets; in dm_table_add_target()
695 memset(ti, 0, sizeof(*ti)); in dm_table_add_target()
706 ti->type = dm_get_target_type(type); in dm_table_add_target()
707 if (!ti->type) { in dm_table_add_target()
712 if (dm_target_needs_singleton(ti->type)) { in dm_table_add_target()
714 ti->error = "singleton target type must appear alone in table"; in dm_table_add_target()
720 if (dm_target_always_writeable(ti->type) && in dm_table_add_target()
722 ti->error = "target type may not be included in a read-only table"; in dm_table_add_target()
727 if (t->immutable_target_type != ti->type) { in dm_table_add_target()
728 ti->error = "immutable target type cannot be mixed with other target types"; in dm_table_add_target()
731 } else if (dm_target_is_immutable(ti->type)) { in dm_table_add_target()
733 ti->error = "immutable target type cannot be mixed with other target types"; in dm_table_add_target()
736 t->immutable_target_type = ti->type; in dm_table_add_target()
739 ti->table = t; in dm_table_add_target()
740 ti->begin = start; in dm_table_add_target()
741 ti->len = len; in dm_table_add_target()
742 ti->error = "Unknown error"; in dm_table_add_target()
747 if (!adjoin(t, ti)) { in dm_table_add_target()
748 ti->error = "Gap in table"; in dm_table_add_target()
754 ti->error = "couldn't split parameters"; in dm_table_add_target()
758 r = ti->type->ctr(ti, argc, argv); in dm_table_add_target()
763 t->highs[t->num_targets++] = ti->begin + ti->len - 1; in dm_table_add_target()
765 if (!ti->num_discard_bios && ti->discards_supported) in dm_table_add_target()
769 if (ti->limit_swap_bios && !static_key_enabled(&swap_bios_enabled.key)) in dm_table_add_target()
772 if (!ti->flush_bypasses_map) in dm_table_add_target()
778 DMERR("%s: %s: %s (%pe)", dm_device_name(t->md), type, ti->error, ERR_PTR(r)); in dm_table_add_target()
779 dm_put_target_type(ti->type); in dm_table_add_target()
859 static int device_not_dax_capable(struct dm_target *ti, struct dm_dev *dev, in device_not_dax_capable() argument
870 static int device_not_dax_synchronous_capable(struct dm_target *ti, struct dm_dev *dev, in device_not_dax_synchronous_capable() argument
881 struct dm_target *ti = dm_table_get_target(t, i); in dm_table_supports_dax() local
883 if (!ti->type->direct_access) in dm_table_supports_dax()
886 if (dm_target_is_wildcard(ti->type) || in dm_table_supports_dax()
887 !ti->type->iterate_devices || in dm_table_supports_dax()
888 ti->type->iterate_devices(ti, iterate_fn, NULL)) in dm_table_supports_dax()
895 static int device_is_rq_stackable(struct dm_target *ti, struct dm_dev *dev, in device_is_rq_stackable() argument
911 struct dm_target *ti; in dm_table_determine_type() local
926 ti = dm_table_get_target(t, i); in dm_table_determine_type()
927 if (dm_target_hybrid(ti)) in dm_table_determine_type()
929 else if (dm_target_request_based(ti)) in dm_table_determine_type()
990 ti = dm_table_get_immutable_target(t); in dm_table_determine_type()
991 if (!ti) { in dm_table_determine_type()
994 } else if (ti->max_io_len) { in dm_table_determine_type()
1000 if (!ti->type->iterate_devices || in dm_table_determine_type()
1001 !ti->type->iterate_devices(ti, device_is_rq_stackable, NULL)) { in dm_table_determine_type()
1032 struct dm_target *ti = dm_table_get_target(t, i); in dm_table_get_wildcard_target() local
1034 if (dm_target_is_wildcard(ti->type)) in dm_table_get_wildcard_target()
1035 return ti; in dm_table_get_wildcard_target()
1073 struct dm_target *ti = dm_table_get_target(t, i); in dm_table_alloc_md_mempools() local
1075 per_io_data_size = max(per_io_data_size, ti->per_io_data_size); in dm_table_alloc_md_mempools()
1076 min_pool_size = max(min_pool_size, ti->num_flush_bios); in dm_table_alloc_md_mempools()
1153 static int dm_keyslot_evict_callback(struct dm_target *ti, struct dm_dev *dev, in dm_keyslot_evict_callback() argument
1179 struct dm_target *ti = dm_table_get_target(t, i); in dm_keyslot_evict() local
1181 if (!ti->type->iterate_devices) in dm_keyslot_evict()
1183 ti->type->iterate_devices(ti, dm_keyslot_evict_callback, in dm_keyslot_evict()
1193 device_intersect_crypto_capabilities(struct dm_target *ti, struct dm_dev *dev, in device_intersect_crypto_capabilities() argument
1253 struct dm_target *ti = dm_table_get_target(t, i); in dm_table_construct_crypto_profile() local
1255 if (!dm_target_passes_crypto(ti->type)) { in dm_table_construct_crypto_profile()
1259 if (!ti->type->iterate_devices) in dm_table_construct_crypto_profile()
1261 ti->type->iterate_devices(ti, in dm_table_construct_crypto_profile()
1450 struct dm_target *ti = dm_table_get_target(t, i); in dm_table_any_dev_attr() local
1452 if (ti->type->iterate_devices && in dm_table_any_dev_attr()
1453 ti->type->iterate_devices(ti, func, data)) in dm_table_any_dev_attr()
1460 static int count_device(struct dm_target *ti, struct dm_dev *dev, in count_device() argument
1479 struct dm_target *ti = dm_table_get_target(t, i); in dm_table_has_no_data_devices() local
1482 if (!ti->type->iterate_devices) in dm_table_has_no_data_devices()
1485 ti->type->iterate_devices(ti, count_device, &num_devices); in dm_table_has_no_data_devices()
1493 static int device_not_zoned(struct dm_target *ti, struct dm_dev *dev, in device_not_zoned() argument
1501 static int device_is_zoned_model(struct dm_target *ti, struct dm_dev *dev, in device_is_zoned_model() argument
1517 struct dm_target *ti = dm_table_get_target(t, i); in dm_table_supports_zoned() local
1527 if (dm_target_is_wildcard(ti->type) && in dm_table_supports_zoned()
1528 !ti->type->iterate_devices(ti, device_is_zoned_model, NULL)) in dm_table_supports_zoned()
1531 if (dm_target_supports_zoned_hm(ti->type)) { in dm_table_supports_zoned()
1532 if (!ti->type->iterate_devices || in dm_table_supports_zoned()
1533 ti->type->iterate_devices(ti, device_not_zoned, in dm_table_supports_zoned()
1536 } else if (!dm_target_supports_mixed_zoned_model(ti->type)) { in dm_table_supports_zoned()
1545 static int device_not_matches_zone_sectors(struct dm_target *ti, struct dm_dev *dev, in device_not_matches_zone_sectors() argument
1599 struct dm_target *ti = dm_table_get_target(t, i); in dm_calculate_queue_limits() local
1601 if (!dm_target_passes_integrity(ti->type)) in dm_calculate_queue_limits()
1606 struct dm_target *ti = dm_table_get_target(t, i); in dm_calculate_queue_limits() local
1610 if (!ti->type->iterate_devices) { in dm_calculate_queue_limits()
1612 if (ti->type->io_hints) in dm_calculate_queue_limits()
1613 ti->type->io_hints(ti, &ti_limits); in dm_calculate_queue_limits()
1620 ti->type->iterate_devices(ti, dm_set_device_limits, in dm_calculate_queue_limits()
1633 if (ti->type->io_hints) in dm_calculate_queue_limits()
1634 ti->type->io_hints(ti, &ti_limits); in dm_calculate_queue_limits()
1640 if (ti->type->iterate_devices(ti, device_area_is_invalid, in dm_calculate_queue_limits()
1653 (unsigned long long) ti->begin, in dm_calculate_queue_limits()
1654 (unsigned long long) ti->len); in dm_calculate_queue_limits()
1657 dm_target_has_integrity(ti->type)) { in dm_calculate_queue_limits()
1662 (unsigned long long) ti->begin, in dm_calculate_queue_limits()
1663 (unsigned long long) ti->len); in dm_calculate_queue_limits()
1697 struct dm_target *ti = dm_table_get_target(t, i); in dm_table_supports_flush() local
1699 if (ti->num_flush_bios && ti->flush_supported) in dm_table_supports_flush()
1706 static int device_dax_write_cache_enabled(struct dm_target *ti, in device_dax_write_cache_enabled() argument
1720 static int device_not_write_zeroes_capable(struct dm_target *ti, struct dm_dev *dev, in device_not_write_zeroes_capable() argument
1731 struct dm_target *ti = dm_table_get_target(t, i); in dm_table_supports_write_zeroes() local
1733 if (!ti->num_write_zeroes_bios) in dm_table_supports_write_zeroes()
1736 if (!ti->type->iterate_devices || in dm_table_supports_write_zeroes()
1737 ti->type->iterate_devices(ti, device_not_write_zeroes_capable, NULL)) in dm_table_supports_write_zeroes()
1747 struct dm_target *ti = dm_table_get_target(t, i); in dm_table_supports_nowait() local
1749 if (!dm_target_supports_nowait(ti->type)) in dm_table_supports_nowait()
1756 static int device_not_discard_capable(struct dm_target *ti, struct dm_dev *dev, in device_not_discard_capable() argument
1765 struct dm_target *ti = dm_table_get_target(t, i); in dm_table_supports_discards() local
1767 if (!ti->num_discard_bios) in dm_table_supports_discards()
1775 if (!ti->discards_supported && in dm_table_supports_discards()
1776 (!ti->type->iterate_devices || in dm_table_supports_discards()
1777 ti->type->iterate_devices(ti, device_not_discard_capable, NULL))) in dm_table_supports_discards()
1784 static int device_not_secure_erase_capable(struct dm_target *ti, in device_not_secure_erase_capable() argument
1794 struct dm_target *ti = dm_table_get_target(t, i); in dm_table_supports_secure_erase() local
1796 if (!ti->num_secure_erase_bios) in dm_table_supports_secure_erase()
1799 if (!ti->type->iterate_devices || in dm_table_supports_secure_erase()
1800 ti->type->iterate_devices(ti, device_not_secure_erase_capable, NULL)) in dm_table_supports_secure_erase()
1807 static int device_not_atomic_write_capable(struct dm_target *ti, in device_not_atomic_write_capable() argument
1817 struct dm_target *ti = dm_table_get_target(t, i); in dm_table_supports_atomic_writes() local
1819 if (!dm_target_supports_atomic_writes(ti->type)) in dm_table_supports_atomic_writes()
1822 if (!ti->type->iterate_devices) in dm_table_supports_atomic_writes()
1825 if (ti->type->iterate_devices(ti, in dm_table_supports_atomic_writes()
1925 struct dm_target *ti = dm_table_get_target(t, i); in suspend_targets() local
1929 if (ti->type->presuspend) in suspend_targets()
1930 ti->type->presuspend(ti); in suspend_targets()
1933 if (ti->type->presuspend_undo) in suspend_targets()
1934 ti->type->presuspend_undo(ti); in suspend_targets()
1937 if (ti->type->postsuspend) in suspend_targets()
1938 ti->type->postsuspend(ti); in suspend_targets()
1976 struct dm_target *ti = dm_table_get_target(t, i); in dm_table_resume_targets() local
1978 if (!ti->type->preresume) in dm_table_resume_targets()
1981 r = ti->type->preresume(ti); in dm_table_resume_targets()
1984 dm_device_name(t->md), ti->type->name, r); in dm_table_resume_targets()
1990 struct dm_target *ti = dm_table_get_target(t, i); in dm_table_resume_targets() local
1992 if (ti->type->resume) in dm_table_resume_targets()
1993 ti->type->resume(ti); in dm_table_resume_targets()