Lines Matching refs:tio

82 	struct dm_rq_target_io *tio = info->tio;  in end_clone_bio()  local
89 if (tio->error) in end_clone_bio()
102 tio->error = error; in end_clone_bio()
110 tio->completed += nr_bytes; in end_clone_bio()
119 blk_update_request(tio->orig, BLK_STS_OK, tio->completed); in end_clone_bio()
130 struct dm_rq_target_io *tio = tio_from_request(orig); in rq_end_stats() local
131 tio->duration_jiffies = jiffies - tio->duration_jiffies; in rq_end_stats()
133 blk_rq_pos(orig), tio->n_sectors, true, in rq_end_stats()
134 tio->duration_jiffies, &tio->stats_aux); in rq_end_stats()
158 struct dm_rq_target_io *tio = clone->end_io_data; in dm_end_request() local
159 struct mapped_device *md = tio->md; in dm_end_request()
160 struct request *rq = tio->orig; in dm_end_request()
163 tio->ti->type->release_clone_rq(clone, NULL); in dm_end_request()
187 static void dm_requeue_original_request(struct dm_rq_target_io *tio, bool delay_requeue) in dm_requeue_original_request() argument
189 struct mapped_device *md = tio->md; in dm_requeue_original_request()
190 struct request *rq = tio->orig; in dm_requeue_original_request()
194 if (tio->clone) { in dm_requeue_original_request()
195 blk_rq_unprep_clone(tio->clone); in dm_requeue_original_request()
196 tio->ti->type->release_clone_rq(tio->clone, NULL); in dm_requeue_original_request()
206 struct dm_rq_target_io *tio = clone->end_io_data; in dm_done() local
209 if (tio->ti) { in dm_done()
210 rq_end_io = tio->ti->type->rq_end_io; in dm_done()
213 r = rq_end_io(tio->ti, clone, error, &tio->info); in dm_done()
219 disable_discard(tio->md); in dm_done()
222 disable_write_same(tio->md); in dm_done()
225 disable_write_zeroes(tio->md); in dm_done()
238 dm_requeue_original_request(tio, false); in dm_done()
242 dm_requeue_original_request(tio, true); in dm_done()
256 struct dm_rq_target_io *tio = tio_from_request(rq); in dm_softirq_done() local
257 struct request *clone = tio->clone; in dm_softirq_done()
260 struct mapped_device *md = tio->md; in dm_softirq_done()
263 blk_mq_end_request(rq, tio->error); in dm_softirq_done()
271 dm_done(clone, tio->error, mapped); in dm_softirq_done()
280 struct dm_rq_target_io *tio = tio_from_request(rq); in dm_complete_request() local
282 tio->error = error; in dm_complete_request()
301 struct dm_rq_target_io *tio = clone->end_io_data; in end_clone_request() local
303 dm_complete_request(tio->orig, error); in end_clone_request()
324 struct dm_rq_target_io *tio = data; in dm_rq_bio_constructor() local
329 info->tio = tio; in dm_rq_bio_constructor()
336 struct dm_rq_target_io *tio, gfp_t gfp_mask) in setup_clone() argument
340 r = blk_rq_prep_clone(clone, rq, &tio->md->bs, gfp_mask, in setup_clone()
341 dm_rq_bio_constructor, tio); in setup_clone()
346 clone->end_io_data = tio; in setup_clone()
348 tio->clone = clone; in setup_clone()
353 static void init_tio(struct dm_rq_target_io *tio, struct request *rq, in init_tio() argument
356 tio->md = md; in init_tio()
357 tio->ti = NULL; in init_tio()
358 tio->clone = NULL; in init_tio()
359 tio->orig = rq; in init_tio()
360 tio->error = 0; in init_tio()
361 tio->completed = 0; in init_tio()
368 memset(&tio->info, 0, sizeof(tio->info)); in init_tio()
377 static int map_request(struct dm_rq_target_io *tio) in map_request() argument
380 struct dm_target *ti = tio->ti; in map_request()
381 struct mapped_device *md = tio->md; in map_request()
382 struct request *rq = tio->orig; in map_request()
386 r = ti->type->clone_and_map_rq(ti, rq, &tio->info, &clone); in map_request()
392 if (setup_clone(clone, rq, tio, GFP_ATOMIC)) { in map_request()
394 ti->type->release_clone_rq(clone, &tio->info); in map_request()
405 tio->ti->type->release_clone_rq(clone, &tio->info); in map_request()
406 tio->clone = NULL; in map_request()
415 dm_requeue_original_request(tio, true); in map_request()
446 struct dm_rq_target_io *tio = tio_from_request(orig); in dm_start_request() local
447 tio->duration_jiffies = jiffies; in dm_start_request()
448 tio->n_sectors = blk_rq_sectors(orig); in dm_start_request()
450 blk_rq_pos(orig), tio->n_sectors, false, 0, in dm_start_request()
451 &tio->stats_aux); in dm_start_request()
468 struct dm_rq_target_io *tio = blk_mq_rq_to_pdu(rq); in dm_mq_init_request() local
474 tio->md = md; in dm_mq_init_request()
478 tio->info.ptr = tio + 1; in dm_mq_init_request()
488 struct dm_rq_target_io *tio = blk_mq_rq_to_pdu(rq); in dm_mq_queue_rq() local
489 struct mapped_device *md = tio->md; in dm_mq_queue_rq()
514 init_tio(tio, rq, md); in dm_mq_queue_rq()
519 tio->ti = ti; in dm_mq_queue_rq()
522 if (map_request(tio) == DM_MAPIO_REQUEUE) { in dm_mq_queue_rq()