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
132 tio->duration_jiffies = jiffies - tio->duration_jiffies; in rq_end_stats()
134 blk_rq_pos(orig), tio->n_sectors, true, in rq_end_stats()
135 tio->duration_jiffies, &tio->stats_aux); in rq_end_stats()
159 struct dm_rq_target_io *tio = clone->end_io_data; in dm_end_request() local
160 struct mapped_device *md = tio->md; in dm_end_request()
161 struct request *rq = tio->orig; in dm_end_request()
164 tio->ti->type->release_clone_rq(clone, NULL); in dm_end_request()
188 static void dm_requeue_original_request(struct dm_rq_target_io *tio, bool delay_requeue) in dm_requeue_original_request() argument
190 struct mapped_device *md = tio->md; in dm_requeue_original_request()
191 struct request *rq = tio->orig; in dm_requeue_original_request()
195 if (tio->clone) { in dm_requeue_original_request()
196 blk_rq_unprep_clone(tio->clone); in dm_requeue_original_request()
197 tio->ti->type->release_clone_rq(tio->clone, NULL); in dm_requeue_original_request()
207 struct dm_rq_target_io *tio = clone->end_io_data; in dm_done() local
210 if (tio->ti) { in dm_done()
211 rq_end_io = tio->ti->type->rq_end_io; in dm_done()
214 r = rq_end_io(tio->ti, clone, error, &tio->info); in dm_done()
220 disable_discard(tio->md); in dm_done()
223 disable_write_zeroes(tio->md); in dm_done()
236 dm_requeue_original_request(tio, false); in dm_done()
240 dm_requeue_original_request(tio, true); in dm_done()
254 struct dm_rq_target_io *tio = tio_from_request(rq); in dm_softirq_done() local
255 struct request *clone = tio->clone; in dm_softirq_done()
258 struct mapped_device *md = tio->md; in dm_softirq_done()
261 blk_mq_end_request(rq, tio->error); in dm_softirq_done()
269 dm_done(clone, tio->error, mapped); in dm_softirq_done()
278 struct dm_rq_target_io *tio = tio_from_request(rq); in dm_complete_request() local
280 tio->error = error; in dm_complete_request()
300 struct dm_rq_target_io *tio = clone->end_io_data; in end_clone_request() local
302 dm_complete_request(tio->orig, error); in end_clone_request()
309 struct dm_rq_target_io *tio = data; in dm_rq_bio_constructor() local
314 info->tio = tio; in dm_rq_bio_constructor()
321 struct dm_rq_target_io *tio, gfp_t gfp_mask) in setup_clone() argument
325 r = blk_rq_prep_clone(clone, rq, &tio->md->mempools->bs, gfp_mask, in setup_clone()
326 dm_rq_bio_constructor, tio); in setup_clone()
331 clone->end_io_data = tio; in setup_clone()
333 tio->clone = clone; in setup_clone()
338 static void init_tio(struct dm_rq_target_io *tio, struct request *rq, in init_tio() argument
341 tio->md = md; in init_tio()
342 tio->ti = NULL; in init_tio()
343 tio->clone = NULL; in init_tio()
344 tio->orig = rq; in init_tio()
345 tio->error = 0; in init_tio()
346 tio->completed = 0; in init_tio()
353 memset(&tio->info, 0, sizeof(tio->info)); in init_tio()
362 static int map_request(struct dm_rq_target_io *tio) in map_request() argument
365 struct dm_target *ti = tio->ti; in map_request()
366 struct mapped_device *md = tio->md; in map_request()
367 struct request *rq = tio->orig; in map_request()
371 r = ti->type->clone_and_map_rq(ti, rq, &tio->info, &clone); in map_request()
377 if (setup_clone(clone, rq, tio, GFP_ATOMIC)) { in map_request()
379 ti->type->release_clone_rq(clone, &tio->info); in map_request()
394 tio->ti->type->release_clone_rq(clone, &tio->info); in map_request()
395 tio->clone = NULL; in map_request()
407 dm_requeue_original_request(tio, true); in map_request()
438 struct dm_rq_target_io *tio = tio_from_request(orig); in dm_start_request() local
440 tio->duration_jiffies = jiffies; in dm_start_request()
441 tio->n_sectors = blk_rq_sectors(orig); in dm_start_request()
443 blk_rq_pos(orig), tio->n_sectors, false, 0, in dm_start_request()
444 &tio->stats_aux); in dm_start_request()
461 struct dm_rq_target_io *tio = blk_mq_rq_to_pdu(rq); in dm_mq_init_request() local
467 tio->md = md; in dm_mq_init_request()
471 tio->info.ptr = tio + 1; in dm_mq_init_request()
481 struct dm_rq_target_io *tio = blk_mq_rq_to_pdu(rq); in dm_mq_queue_rq() local
482 struct mapped_device *md = tio->md; in dm_mq_queue_rq()
512 init_tio(tio, rq, md); in dm_mq_queue_rq()
517 tio->ti = ti; in dm_mq_queue_rq()
520 if (map_request(tio) == DM_MAPIO_REQUEUE) { in dm_mq_queue_rq()