Lines Matching refs:ti
217 struct dm_target *ti; /* Only set if a pool target is bound */ member
274 struct dm_target *ti; member
1180 dm_table_event(pool->ti->table); in check_low_water_mark()
2101 dm_table_event(pool->ti->table); in notify_of_pool_mode_change()
2108 struct pool_c *pt = pool->ti->private; in set_pool_mode()
2287 static int thin_bio_map(struct dm_target *ti, struct bio *bio) in thin_bio_map() argument
2290 struct thin_c *tc = ti->private; in thin_bio_map()
2454 static int bind_control_target(struct pool *pool, struct dm_target *ti) in bind_control_target() argument
2456 struct pool_c *pt = ti->private; in bind_control_target()
2471 pool->ti = ti; in bind_control_target()
2480 static void unbind_control_target(struct pool *pool, struct dm_target *ti) in unbind_control_target() argument
2482 if (pool->ti == ti) in unbind_control_target()
2483 pool->ti = NULL; in unbind_control_target()
2701 static void pool_dtr(struct dm_target *ti) in pool_dtr() argument
2703 struct pool_c *pt = ti->private; in pool_dtr()
2707 unbind_control_target(pt->pool, ti); in pool_dtr()
2709 dm_put_device(ti, pt->metadata_dev); in pool_dtr()
2710 dm_put_device(ti, pt->data_dev); in pool_dtr()
2717 struct dm_target *ti) in parse_pool_features() argument
2733 r = dm_read_arg_group(_args, as, &argc, &ti->error); in parse_pool_features()
2757 ti->error = "Unrecognised pool feature requested"; in parse_pool_features()
2773 dm_table_event(pool->ti->table); in metadata_low_callback()
2840 static int pool_ctr(struct dm_target *ti, unsigned argc, char **argv) in pool_ctr() argument
2859 ti->error = "Invalid argument count"; in pool_ctr()
2873 r = parse_pool_features(&as, &pf, ti); in pool_ctr()
2878 r = dm_get_device(ti, argv[0], metadata_mode, &metadata_dev); in pool_ctr()
2880 ti->error = "Error opening metadata block device"; in pool_ctr()
2885 r = dm_get_device(ti, argv[1], FMODE_READ | FMODE_WRITE, &data_dev); in pool_ctr()
2887 ti->error = "Error getting data device"; in pool_ctr()
2895 ti->error = "Invalid block size"; in pool_ctr()
2901 ti->error = "Invalid low water mark"; in pool_ctr()
2912 pool = __pool_find(dm_table_get_md(ti->table), metadata_dev->bdev, in pool_ctr()
2913 block_size, pf.mode == PM_READ_ONLY, &ti->error, &pool_created); in pool_ctr()
2926 ti->error = "Discard support cannot be disabled once enabled"; in pool_ctr()
2932 pt->ti = ti; in pool_ctr()
2937 ti->num_flush_bios = 1; in pool_ctr()
2944 ti->discard_zeroes_data_unsupported = true; in pool_ctr()
2946 ti->num_discard_bios = 1; in pool_ctr()
2953 ti->discards_supported = true; in pool_ctr()
2955 ti->private = pt; in pool_ctr()
2965 dm_table_add_target_callbacks(ti->table, &pt->callbacks); in pool_ctr()
2976 dm_put_device(ti, data_dev); in pool_ctr()
2978 dm_put_device(ti, metadata_dev); in pool_ctr()
2985 static int pool_map(struct dm_target *ti, struct bio *bio) in pool_map() argument
2988 struct pool_c *pt = ti->private; in pool_map()
3003 static int maybe_resize_data_dev(struct dm_target *ti, bool *need_commit) in maybe_resize_data_dev() argument
3006 struct pool_c *pt = ti->private; in maybe_resize_data_dev()
3008 sector_t data_size = ti->len; in maybe_resize_data_dev()
3051 static int maybe_resize_metadata_dev(struct dm_target *ti, bool *need_commit) in maybe_resize_metadata_dev() argument
3054 struct pool_c *pt = ti->private; in maybe_resize_metadata_dev()
3109 static int pool_preresume(struct dm_target *ti) in pool_preresume() argument
3113 struct pool_c *pt = ti->private; in pool_preresume()
3119 r = bind_control_target(pool, ti); in pool_preresume()
3123 r = maybe_resize_data_dev(ti, &need_commit1); in pool_preresume()
3127 r = maybe_resize_metadata_dev(ti, &need_commit2); in pool_preresume()
3161 static void pool_resume(struct dm_target *ti) in pool_resume() argument
3163 struct pool_c *pt = ti->private; in pool_resume()
3182 static void pool_presuspend(struct dm_target *ti) in pool_presuspend() argument
3184 struct pool_c *pt = ti->private; in pool_presuspend()
3195 static void pool_presuspend_undo(struct dm_target *ti) in pool_presuspend_undo() argument
3197 struct pool_c *pt = ti->private; in pool_presuspend_undo()
3208 static void pool_postsuspend(struct dm_target *ti) in pool_postsuspend() argument
3210 struct pool_c *pt = ti->private; in pool_postsuspend()
3383 static int pool_message(struct dm_target *ti, unsigned argc, char **argv) in pool_message() argument
3386 struct pool_c *pt = ti->private; in pool_message()
3451 static void pool_status(struct dm_target *ti, status_type_t type, in pool_status() argument
3464 struct pool_c *pt = ti->private; in pool_status()
3475 if (!(status_flags & DM_STATUS_NOFLUSH_FLAG) && !dm_suspended(ti)) in pool_status()
3568 static int pool_iterate_devices(struct dm_target *ti, in pool_iterate_devices() argument
3571 struct pool_c *pt = ti->private; in pool_iterate_devices()
3573 return fn(ti, pt->data_dev, 0, ti->len, data); in pool_iterate_devices()
3576 static int pool_merge(struct dm_target *ti, struct bvec_merge_data *bvm, in pool_merge() argument
3579 struct pool_c *pt = ti->private; in pool_merge()
3608 static void pool_io_hints(struct dm_target *ti, struct queue_limits *limits) in pool_io_hints() argument
3610 struct pool_c *pt = ti->private; in pool_io_hints()
3700 static void thin_dtr(struct dm_target *ti) in thin_dtr() argument
3702 struct thin_c *tc = ti->private; in thin_dtr()
3717 dm_put_device(ti, tc->pool_dev); in thin_dtr()
3719 dm_put_device(ti, tc->origin_dev); in thin_dtr()
3737 static int thin_ctr(struct dm_target *ti, unsigned argc, char **argv) in thin_ctr() argument
3748 ti->error = "Invalid argument count"; in thin_ctr()
3753 tc = ti->private = kzalloc(sizeof(*tc), GFP_KERNEL); in thin_ctr()
3755 ti->error = "Out of memory"; in thin_ctr()
3759 tc->thin_md = dm_table_get_md(ti->table); in thin_ctr()
3767 r = dm_get_device(ti, argv[2], FMODE_READ, &origin_dev); in thin_ctr()
3769 ti->error = "Error opening origin device"; in thin_ctr()
3775 r = dm_get_device(ti, argv[0], dm_table_get_mode(ti->table), &pool_dev); in thin_ctr()
3777 ti->error = "Error opening pool device"; in thin_ctr()
3783 ti->error = "Invalid device id"; in thin_ctr()
3790 ti->error = "Couldn't get pool mapped device"; in thin_ctr()
3797 ti->error = "Couldn't find pool object"; in thin_ctr()
3804 ti->error = "Couldn't open thin device, Pool is in fail mode"; in thin_ctr()
3811 ti->error = "Couldn't open thin internal device"; in thin_ctr()
3815 r = dm_set_target_max_io_len(ti, tc->pool->sectors_per_block); in thin_ctr()
3819 ti->num_flush_bios = 1; in thin_ctr()
3820 ti->flush_supported = true; in thin_ctr()
3821 ti->per_bio_data_size = sizeof(struct dm_thin_endio_hook); in thin_ctr()
3824 ti->discard_zeroes_data_unsupported = true; in thin_ctr()
3826 ti->discards_supported = true; in thin_ctr()
3827 ti->num_discard_bios = 1; in thin_ctr()
3829 ti->split_discard_bios = true; in thin_ctr()
3838 ti->error = "Unable to activate thin device while pool is suspended"; in thin_ctr()
3865 dm_put_device(ti, tc->pool_dev); in thin_ctr()
3868 dm_put_device(ti, tc->origin_dev); in thin_ctr()
3877 static int thin_map(struct dm_target *ti, struct bio *bio) in thin_map() argument
3879 bio->bi_iter.bi_sector = dm_target_offset(ti, bio->bi_iter.bi_sector); in thin_map()
3881 return thin_bio_map(ti, bio); in thin_map()
3884 static int thin_endio(struct dm_target *ti, struct bio *bio, int err) in thin_endio() argument
3919 static void thin_presuspend(struct dm_target *ti) in thin_presuspend() argument
3921 struct thin_c *tc = ti->private; in thin_presuspend()
3923 if (dm_noflush_suspending(ti)) in thin_presuspend()
3927 static void thin_postsuspend(struct dm_target *ti) in thin_postsuspend() argument
3929 struct thin_c *tc = ti->private; in thin_postsuspend()
3938 static int thin_preresume(struct dm_target *ti) in thin_preresume() argument
3940 struct thin_c *tc = ti->private; in thin_preresume()
3951 static void thin_status(struct dm_target *ti, status_type_t type, in thin_status() argument
3958 struct thin_c *tc = ti->private; in thin_status()
4006 static int thin_merge(struct dm_target *ti, struct bvec_merge_data *bvm, in thin_merge() argument
4009 struct thin_c *tc = ti->private; in thin_merge()
4016 bvm->bi_sector = dm_target_offset(ti, bvm->bi_sector); in thin_merge()
4021 static int thin_iterate_devices(struct dm_target *ti, in thin_iterate_devices() argument
4025 struct thin_c *tc = ti->private; in thin_iterate_devices()
4032 if (!pool->ti) in thin_iterate_devices()
4035 blocks = pool->ti->len; in thin_iterate_devices()
4038 return fn(ti, tc->pool_dev, 0, pool->sectors_per_block * blocks, data); in thin_iterate_devices()