Lines Matching refs:ti

225 	struct dm_target *ti;	/* Only set if a pool target is bound */  member
282 struct dm_target *ti; member
1348 dm_table_event(pool->ti->table); in check_low_water_mark()
2324 dm_table_event(pool->ti->table); in notify_of_pool_mode_change()
2344 struct pool_c *pt = pool->ti->private; in set_discard_callbacks()
2357 struct pool_c *pt = pool->ti->private; in set_pool_mode()
2536 static int thin_bio_map(struct dm_target *ti, struct bio *bio) in thin_bio_map() argument
2539 struct thin_c *tc = ti->private; in thin_bio_map()
2697 static int bind_control_target(struct pool *pool, struct dm_target *ti) in bind_control_target() argument
2699 struct pool_c *pt = ti->private; in bind_control_target()
2714 pool->ti = ti; in bind_control_target()
2723 static void unbind_control_target(struct pool *pool, struct dm_target *ti) in unbind_control_target() argument
2725 if (pool->ti == ti) in unbind_control_target()
2726 pool->ti = NULL; in unbind_control_target()
2944 static void pool_dtr(struct dm_target *ti) in pool_dtr() argument
2946 struct pool_c *pt = ti->private; in pool_dtr()
2950 unbind_control_target(pt->pool, ti); in pool_dtr()
2952 dm_put_device(ti, pt->metadata_dev); in pool_dtr()
2953 dm_put_device(ti, pt->data_dev); in pool_dtr()
2960 struct dm_target *ti) in parse_pool_features() argument
2976 r = dm_read_arg_group(_args, as, &argc, &ti->error); in parse_pool_features()
3000 ti->error = "Unrecognised pool feature requested"; in parse_pool_features()
3016 dm_table_event(pool->ti->table); in metadata_low_callback()
3083 static int pool_ctr(struct dm_target *ti, unsigned argc, char **argv) in pool_ctr() argument
3102 ti->error = "Invalid argument count"; in pool_ctr()
3116 r = parse_pool_features(&as, &pf, ti); in pool_ctr()
3121 r = dm_get_device(ti, argv[0], metadata_mode, &metadata_dev); in pool_ctr()
3123 ti->error = "Error opening metadata block device"; in pool_ctr()
3128 r = dm_get_device(ti, argv[1], FMODE_READ | FMODE_WRITE, &data_dev); in pool_ctr()
3130 ti->error = "Error getting data device"; in pool_ctr()
3138 ti->error = "Invalid block size"; in pool_ctr()
3144 ti->error = "Invalid low water mark"; in pool_ctr()
3155 pool = __pool_find(dm_table_get_md(ti->table), metadata_dev->bdev, in pool_ctr()
3156 block_size, pf.mode == PM_READ_ONLY, &ti->error, &pool_created); in pool_ctr()
3169 ti->error = "Discard support cannot be disabled once enabled"; in pool_ctr()
3175 pt->ti = ti; in pool_ctr()
3180 ti->num_flush_bios = 1; in pool_ctr()
3187 ti->discard_zeroes_data_unsupported = true; in pool_ctr()
3189 ti->num_discard_bios = 1; in pool_ctr()
3196 ti->discards_supported = true; in pool_ctr()
3198 ti->private = pt; in pool_ctr()
3208 dm_table_add_target_callbacks(ti->table, &pt->callbacks); in pool_ctr()
3219 dm_put_device(ti, data_dev); in pool_ctr()
3221 dm_put_device(ti, metadata_dev); in pool_ctr()
3228 static int pool_map(struct dm_target *ti, struct bio *bio) in pool_map() argument
3231 struct pool_c *pt = ti->private; in pool_map()
3246 static int maybe_resize_data_dev(struct dm_target *ti, bool *need_commit) in maybe_resize_data_dev() argument
3249 struct pool_c *pt = ti->private; in maybe_resize_data_dev()
3251 sector_t data_size = ti->len; in maybe_resize_data_dev()
3294 static int maybe_resize_metadata_dev(struct dm_target *ti, bool *need_commit) in maybe_resize_metadata_dev() argument
3297 struct pool_c *pt = ti->private; in maybe_resize_metadata_dev()
3352 static int pool_preresume(struct dm_target *ti) in pool_preresume() argument
3356 struct pool_c *pt = ti->private; in pool_preresume()
3362 r = bind_control_target(pool, ti); in pool_preresume()
3366 r = maybe_resize_data_dev(ti, &need_commit1); in pool_preresume()
3370 r = maybe_resize_metadata_dev(ti, &need_commit2); in pool_preresume()
3404 static void pool_resume(struct dm_target *ti) in pool_resume() argument
3406 struct pool_c *pt = ti->private; in pool_resume()
3425 static void pool_presuspend(struct dm_target *ti) in pool_presuspend() argument
3427 struct pool_c *pt = ti->private; in pool_presuspend()
3438 static void pool_presuspend_undo(struct dm_target *ti) in pool_presuspend_undo() argument
3440 struct pool_c *pt = ti->private; in pool_presuspend_undo()
3451 static void pool_postsuspend(struct dm_target *ti) in pool_postsuspend() argument
3453 struct pool_c *pt = ti->private; in pool_postsuspend()
3626 static int pool_message(struct dm_target *ti, unsigned argc, char **argv) in pool_message() argument
3629 struct pool_c *pt = ti->private; in pool_message()
3695 static void pool_status(struct dm_target *ti, status_type_t type, in pool_status() argument
3708 struct pool_c *pt = ti->private; in pool_status()
3719 if (!(status_flags & DM_STATUS_NOFLUSH_FLAG) && !dm_suspended(ti)) in pool_status()
3817 static int pool_iterate_devices(struct dm_target *ti, in pool_iterate_devices() argument
3820 struct pool_c *pt = ti->private; in pool_iterate_devices()
3822 return fn(ti, pt->data_dev, 0, ti->len, data); in pool_iterate_devices()
3825 static void pool_io_hints(struct dm_target *ti, struct queue_limits *limits) in pool_io_hints() argument
3827 struct pool_c *pt = ti->private; in pool_io_hints()
3919 static void thin_dtr(struct dm_target *ti) in thin_dtr() argument
3921 struct thin_c *tc = ti->private; in thin_dtr()
3936 dm_put_device(ti, tc->pool_dev); in thin_dtr()
3938 dm_put_device(ti, tc->origin_dev); in thin_dtr()
3956 static int thin_ctr(struct dm_target *ti, unsigned argc, char **argv) in thin_ctr() argument
3967 ti->error = "Invalid argument count"; in thin_ctr()
3972 tc = ti->private = kzalloc(sizeof(*tc), GFP_KERNEL); in thin_ctr()
3974 ti->error = "Out of memory"; in thin_ctr()
3978 tc->thin_md = dm_table_get_md(ti->table); in thin_ctr()
3986 r = dm_get_device(ti, argv[2], FMODE_READ, &origin_dev); in thin_ctr()
3988 ti->error = "Error opening origin device"; in thin_ctr()
3994 r = dm_get_device(ti, argv[0], dm_table_get_mode(ti->table), &pool_dev); in thin_ctr()
3996 ti->error = "Error opening pool device"; in thin_ctr()
4002 ti->error = "Invalid device id"; in thin_ctr()
4009 ti->error = "Couldn't get pool mapped device"; in thin_ctr()
4016 ti->error = "Couldn't find pool object"; in thin_ctr()
4023 ti->error = "Couldn't open thin device, Pool is in fail mode"; in thin_ctr()
4030 ti->error = "Couldn't open thin internal device"; in thin_ctr()
4034 r = dm_set_target_max_io_len(ti, tc->pool->sectors_per_block); in thin_ctr()
4038 ti->num_flush_bios = 1; in thin_ctr()
4039 ti->flush_supported = true; in thin_ctr()
4040 ti->per_bio_data_size = sizeof(struct dm_thin_endio_hook); in thin_ctr()
4043 ti->discard_zeroes_data_unsupported = true; in thin_ctr()
4045 ti->discards_supported = true; in thin_ctr()
4046 ti->num_discard_bios = 1; in thin_ctr()
4047 ti->split_discard_bios = false; in thin_ctr()
4056 ti->error = "Unable to activate thin device while pool is suspended"; in thin_ctr()
4083 dm_put_device(ti, tc->pool_dev); in thin_ctr()
4086 dm_put_device(ti, tc->origin_dev); in thin_ctr()
4095 static int thin_map(struct dm_target *ti, struct bio *bio) in thin_map() argument
4097 bio->bi_iter.bi_sector = dm_target_offset(ti, bio->bi_iter.bi_sector); in thin_map()
4099 return thin_bio_map(ti, bio); in thin_map()
4102 static int thin_endio(struct dm_target *ti, struct bio *bio, int err) in thin_endio() argument
4140 static void thin_presuspend(struct dm_target *ti) in thin_presuspend() argument
4142 struct thin_c *tc = ti->private; in thin_presuspend()
4144 if (dm_noflush_suspending(ti)) in thin_presuspend()
4148 static void thin_postsuspend(struct dm_target *ti) in thin_postsuspend() argument
4150 struct thin_c *tc = ti->private; in thin_postsuspend()
4159 static int thin_preresume(struct dm_target *ti) in thin_preresume() argument
4161 struct thin_c *tc = ti->private; in thin_preresume()
4172 static void thin_status(struct dm_target *ti, status_type_t type, in thin_status() argument
4179 struct thin_c *tc = ti->private; in thin_status()
4227 static int thin_iterate_devices(struct dm_target *ti, in thin_iterate_devices() argument
4231 struct thin_c *tc = ti->private; in thin_iterate_devices()
4238 if (!pool->ti) in thin_iterate_devices()
4241 blocks = pool->ti->len; in thin_iterate_devices()
4244 return fn(ti, tc->pool_dev, 0, pool->sectors_per_block * blocks, data); in thin_iterate_devices()
4249 static void thin_io_hints(struct dm_target *ti, struct queue_limits *limits) in thin_io_hints() argument
4251 struct thin_c *tc = ti->private; in thin_io_hints()