Lines Matching refs:ti

31 #define dm_target_is_snapshot_merge(ti) \  argument
32 ((ti)->type->name == dm_snapshot_merge_target_name)
55 struct dm_target *ti; member
329 struct dm_target *ti; member
463 if (dm_target_is_snapshot_merge(s->ti) && snap_merge) in __find_snapshots_sharing_cow()
498 snap->ti->error = "Snapshot cow pairing for exception table handover failed"; in __validate_exception_handover()
512 if (!dm_target_is_snapshot_merge(snap->ti)) in __validate_exception_handover()
519 snap->ti->error = "A snapshot is already merging."; in __validate_exception_handover()
525 snap->ti->error = "Snapshot exception store does not support snapshot-merge."; in __validate_exception_handover()
1186 struct dm_target *ti) in parse_snapshot_features() argument
1202 r = dm_read_arg_group(_args, as, &argc, &ti->error); in parse_snapshot_features()
1217 ti->error = "Unrecognised feature requested"; in parse_snapshot_features()
1228 ti->error = "discard_passdown_origin feature depends on discard_zeroes_cow"; in parse_snapshot_features()
1239 static int snapshot_ctr(struct dm_target *ti, unsigned int argc, char **argv) in snapshot_ctr() argument
1250 ti->error = "requires 4 or more arguments"; in snapshot_ctr()
1255 if (dm_target_is_snapshot_merge(ti)) { in snapshot_ctr()
1262 ti->error = "Cannot allocate private snapshot structure"; in snapshot_ctr()
1270 r = parse_snapshot_features(&as, s, ti); in snapshot_ctr()
1278 r = dm_get_device(ti, origin_path, origin_mode, &s->origin); in snapshot_ctr()
1280 ti->error = "Cannot get origin device"; in snapshot_ctr()
1288 r = dm_get_device(ti, cow_path, dm_table_get_mode(ti->table), &s->cow); in snapshot_ctr()
1290 ti->error = "Cannot get COW device"; in snapshot_ctr()
1294 ti->error = "COW device cannot be the same as origin device"; in snapshot_ctr()
1299 r = dm_exception_store_create(ti, argc, argv, s, &args_used, &s->store); in snapshot_ctr()
1301 ti->error = "Couldn't create exception store"; in snapshot_ctr()
1309 s->ti = ti; in snapshot_ctr()
1329 ti->error = "Unable to allocate hash table space"; in snapshot_ctr()
1339 ti->error = "Could not create kcopyd client"; in snapshot_ctr()
1345 ti->error = "Could not allocate mempool for pending exceptions"; in snapshot_ctr()
1354 ti->private = s; in snapshot_ctr()
1355 ti->num_flush_bios = num_flush_bios; in snapshot_ctr()
1357 ti->num_discard_bios = (s->discard_passdown_origin ? 2 : 1); in snapshot_ctr()
1358 ti->per_io_data_size = sizeof(struct dm_snap_tracked_chunk); in snapshot_ctr()
1364 ti->error = "Snapshot origin struct allocation failed"; in snapshot_ctr()
1385 ti->error = "Failed to read snapshot metadata"; in snapshot_ctr()
1393 ti->error = "Chunk size not set"; in snapshot_ctr()
1398 r = dm_set_target_max_io_len(ti, s->store->chunk_size); in snapshot_ctr()
1416 dm_put_device(ti, s->cow); in snapshot_ctr()
1418 dm_put_device(ti, s->origin); in snapshot_ctr()
1458 snap_dest->ti->max_io_len = snap_dest->store->chunk_size; in __handover_exceptions()
1468 static void snapshot_dtr(struct dm_target *ti) in snapshot_dtr() argument
1473 struct dm_snapshot *s = ti->private; in snapshot_dtr()
1487 if (dm_target_is_snapshot_merge(ti)) in snapshot_dtr()
1513 dm_put_device(ti, s->cow); in snapshot_dtr()
1515 dm_put_device(ti, s->origin); in snapshot_dtr()
1633 dm_table_event(s->ti->table); in __invalidate_snapshot()
1948 static int snapshot_map(struct dm_target *ti, struct bio *bio) in snapshot_map() argument
1951 struct dm_snapshot *s = ti->private; in snapshot_map()
2116 static int snapshot_merge_map(struct dm_target *ti, struct bio *bio) in snapshot_merge_map() argument
2119 struct dm_snapshot *s = ti->private; in snapshot_merge_map()
2182 static int snapshot_end_io(struct dm_target *ti, struct bio *bio, in snapshot_end_io() argument
2185 struct dm_snapshot *s = ti->private; in snapshot_end_io()
2193 static void snapshot_merge_presuspend(struct dm_target *ti) in snapshot_merge_presuspend() argument
2195 struct dm_snapshot *s = ti->private; in snapshot_merge_presuspend()
2200 static int snapshot_preresume(struct dm_target *ti) in snapshot_preresume() argument
2203 struct dm_snapshot *s = ti->private; in snapshot_preresume()
2213 } else if (!dm_suspended(snap_src->ti)) { in snapshot_preresume()
2224 static void snapshot_resume(struct dm_target *ti) in snapshot_resume() argument
2226 struct dm_snapshot *s = ti->private; in snapshot_resume()
2236 origin_md = dm_table_get_md(o->ti->table); in snapshot_resume()
2240 origin_md = dm_table_get_md(snap_merging->ti->table); in snapshot_resume()
2242 if (origin_md == dm_table_get_md(ti->table)) in snapshot_resume()
2298 static void snapshot_merge_resume(struct dm_target *ti) in snapshot_merge_resume() argument
2300 struct dm_snapshot *s = ti->private; in snapshot_merge_resume()
2305 snapshot_resume(ti); in snapshot_merge_resume()
2310 ti->max_io_len = get_origin_minimum_chunksize(s->origin->bdev); in snapshot_merge_resume()
2315 static void snapshot_status(struct dm_target *ti, status_type_t type, in snapshot_status() argument
2319 struct dm_snapshot *snap = ti->private; in snapshot_status()
2373 DMEMIT_TARGET_NAME_VERSION(ti->type); in snapshot_status()
2384 static int snapshot_iterate_devices(struct dm_target *ti, in snapshot_iterate_devices() argument
2387 struct dm_snapshot *snap = ti->private; in snapshot_iterate_devices()
2390 r = fn(ti, snap->origin, 0, ti->len, data); in snapshot_iterate_devices()
2393 r = fn(ti, snap->cow, 0, get_dev_size(snap->cow->bdev), data); in snapshot_iterate_devices()
2398 static void snapshot_io_hints(struct dm_target *ti, struct queue_limits *limits) in snapshot_io_hints() argument
2400 struct dm_snapshot *snap = ti->private; in snapshot_io_hints()
2452 if (dm_target_is_snapshot_merge(snap->ti)) in __origin_write()
2456 if (sector >= dm_table_get_size(snap->ti->table)) in __origin_write()
2606 for (n = 0; n < size; n += merging_snap->ti->max_io_len) in origin_write_extent()
2624 static int origin_ctr(struct dm_target *ti, unsigned int argc, char **argv) in origin_ctr() argument
2630 ti->error = "origin: incorrect number of arguments"; in origin_ctr()
2636 ti->error = "Cannot allocate private origin structure"; in origin_ctr()
2641 r = dm_get_device(ti, argv[0], dm_table_get_mode(ti->table), &o->dev); in origin_ctr()
2643 ti->error = "Cannot get target device"; in origin_ctr()
2647 o->ti = ti; in origin_ctr()
2648 ti->private = o; in origin_ctr()
2649 ti->num_flush_bios = 1; in origin_ctr()
2659 static void origin_dtr(struct dm_target *ti) in origin_dtr() argument
2661 struct dm_origin *o = ti->private; in origin_dtr()
2663 dm_put_device(ti, o->dev); in origin_dtr()
2667 static int origin_map(struct dm_target *ti, struct bio *bio) in origin_map() argument
2669 struct dm_origin *o = ti->private; in origin_map()
2694 static void origin_resume(struct dm_target *ti) in origin_resume() argument
2696 struct dm_origin *o = ti->private; in origin_resume()
2705 static void origin_postsuspend(struct dm_target *ti) in origin_postsuspend() argument
2707 struct dm_origin *o = ti->private; in origin_postsuspend()
2714 static void origin_status(struct dm_target *ti, status_type_t type, in origin_status() argument
2717 struct dm_origin *o = ti->private; in origin_status()
2733 static int origin_iterate_devices(struct dm_target *ti, in origin_iterate_devices() argument
2736 struct dm_origin *o = ti->private; in origin_iterate_devices()
2738 return fn(ti, o->dev, 0, ti->len, data); in origin_iterate_devices()