Lines Matching refs:ti
50 struct dm_target *ti; member
252 static int mirror_flush(struct dm_target *ti) in mirror_flush() argument
254 struct mirror_set *ms = ti->private; in mirror_flush()
345 from.count = ms->ti->len & (region_size - 1); in recover()
399 dm_table_event(ms->ti->table); in do_recovery()
447 return m->offset + dm_target_offset(m->ms->ti, bio->bi_iter.bi_sector); in map_sector()
478 if (dm_noflush_suspending(ms->ti)) in hold_bio()
826 dm_table_event(ms->ti->table); in trigger_event()
860 struct dm_target *ti, in alloc_context() argument
870 ti->error = "Cannot allocate mirror context"; in alloc_context()
880 ms->ti = ti; in alloc_context()
882 ms->nr_regions = dm_sector_div_up(ti->len, region_size); in alloc_context()
891 ti->error = "Error creating dm_io client"; in alloc_context()
898 ms->ti->begin, MAX_RECOVERY, in alloc_context()
901 ti->error = "Error creating dirty region hash"; in alloc_context()
910 static void free_context(struct mirror_set *ms, struct dm_target *ti, in free_context() argument
914 dm_put_device(ti, ms->mirror[m].dev); in free_context()
921 static int get_mirror(struct mirror_set *ms, struct dm_target *ti, in get_mirror() argument
928 ti->error = "Invalid offset"; in get_mirror()
932 if (dm_get_device(ti, argv[0], dm_table_get_mode(ti->table), in get_mirror()
934 ti->error = "Device lookup failure"; in get_mirror()
949 static struct dm_dirty_log *create_dirty_log(struct dm_target *ti, in create_dirty_log() argument
958 ti->error = "Insufficient mirror log arguments"; in create_dirty_log()
963 ti->error = "Invalid mirror log argument count"; in create_dirty_log()
970 ti->error = "Insufficient mirror log arguments"; in create_dirty_log()
974 dl = dm_dirty_log_create(argv[0], ti, mirror_flush, param_count, in create_dirty_log()
977 ti->error = "Error creating mirror dirty log"; in create_dirty_log()
988 struct dm_target *ti = ms->ti; in parse_features() local
997 ti->error = "Invalid number of features"; in parse_features()
1006 ti->error = "Not enough arguments to support feature count"; in parse_features()
1013 ti->error = "Unrecognised feature requested"; in parse_features()
1034 static int mirror_ctr(struct dm_target *ti, unsigned int argc, char **argv) in mirror_ctr() argument
1042 dl = create_dirty_log(ti, argc, argv, &args_used); in mirror_ctr()
1051 ti->error = "Invalid number of mirrors"; in mirror_ctr()
1059 ti->error = "Too few mirror arguments"; in mirror_ctr()
1064 ms = alloc_context(nr_mirrors, dl->type->get_region_size(dl), ti, dl); in mirror_ctr()
1072 r = get_mirror(ms, ti, m, argv); in mirror_ctr()
1074 free_context(ms, ti, m); in mirror_ctr()
1081 ti->private = ms; in mirror_ctr()
1083 r = dm_set_target_max_io_len(ti, dm_rh_get_region_size(ms->rh)); in mirror_ctr()
1087 ti->num_flush_bios = 1; in mirror_ctr()
1088 ti->num_discard_bios = 1; in mirror_ctr()
1089 ti->per_bio_data_size = sizeof(struct dm_raid1_bio_record); in mirror_ctr()
1090 ti->discard_zeroes_data_unsupported = true; in mirror_ctr()
1120 ti->error = "Too many mirror arguments"; in mirror_ctr()
1137 free_context(ms, ti, ms->nr_mirrors); in mirror_ctr()
1141 static void mirror_dtr(struct dm_target *ti) in mirror_dtr() argument
1143 struct mirror_set *ms = (struct mirror_set *) ti->private; in mirror_dtr()
1150 free_context(ms, ti, ms->nr_mirrors); in mirror_dtr()
1156 static int mirror_map(struct dm_target *ti, struct bio *bio) in mirror_map() argument
1160 struct mirror_set *ms = ti->private; in mirror_map()
1205 static int mirror_end_io(struct dm_target *ti, struct bio *bio, int error) in mirror_end_io() argument
1208 struct mirror_set *ms = (struct mirror_set *) ti->private; in mirror_end_io()
1271 static void mirror_presuspend(struct dm_target *ti) in mirror_presuspend() argument
1273 struct mirror_set *ms = (struct mirror_set *) ti->private; in mirror_presuspend()
1317 static void mirror_postsuspend(struct dm_target *ti) in mirror_postsuspend() argument
1319 struct mirror_set *ms = ti->private; in mirror_postsuspend()
1327 static void mirror_resume(struct dm_target *ti) in mirror_resume() argument
1329 struct mirror_set *ms = ti->private; in mirror_resume()
1364 static void mirror_status(struct dm_target *ti, status_type_t type, in mirror_status() argument
1368 struct mirror_set *ms = (struct mirror_set *) ti->private; in mirror_status()
1402 static int mirror_iterate_devices(struct dm_target *ti, in mirror_iterate_devices() argument
1405 struct mirror_set *ms = ti->private; in mirror_iterate_devices()
1410 ret = fn(ti, ms->mirror[i].dev, in mirror_iterate_devices()
1411 ms->mirror[i].offset, ti->len, data); in mirror_iterate_devices()