Lines Matching refs:tio

82 	struct dm_rq_target_io *tio = info->tio;
89 if (tio->error)
102 tio->error = error;
110 tio->completed += nr_bytes;
119 blk_update_request(tio->orig, BLK_STS_OK, tio->completed);
130 struct dm_rq_target_io *tio = tio_from_request(orig);
132 tio->duration_jiffies = jiffies - tio->duration_jiffies;
134 blk_rq_pos(orig), tio->n_sectors, true,
135 tio->duration_jiffies, &tio->stats_aux);
159 struct dm_rq_target_io *tio = clone->end_io_data;
160 struct mapped_device *md = tio->md;
161 struct request *rq = tio->orig;
164 tio->ti->type->release_clone_rq(clone, NULL);
188 static void dm_requeue_original_request(struct dm_rq_target_io *tio, bool delay_requeue)
190 struct mapped_device *md = tio->md;
191 struct request *rq = tio->orig;
195 if (tio->clone) {
196 blk_rq_unprep_clone(tio->clone);
197 tio->ti->type->release_clone_rq(tio->clone, NULL);
207 struct dm_rq_target_io *tio = clone->end_io_data;
210 if (tio->ti) {
211 rq_end_io = tio->ti->type->rq_end_io;
214 r = rq_end_io(tio->ti, clone, error, &tio->info);
220 disable_discard(tio->md);
223 disable_write_zeroes(tio->md);
236 dm_requeue_original_request(tio, false);
240 dm_requeue_original_request(tio, true);
254 struct dm_rq_target_io *tio = tio_from_request(rq);
255 struct request *clone = tio->clone;
258 struct mapped_device *md = tio->md;
261 blk_mq_end_request(rq, tio->error);
269 dm_done(clone, tio->error, mapped);
278 struct dm_rq_target_io *tio = tio_from_request(rq);
280 tio->error = error;
300 struct dm_rq_target_io *tio = clone->end_io_data;
302 dm_complete_request(tio->orig, error);
309 struct dm_rq_target_io *tio = data;
314 info->tio = tio;
321 struct dm_rq_target_io *tio, gfp_t gfp_mask)
325 r = blk_rq_prep_clone(clone, rq, &tio->md->mempools->bs, gfp_mask,
326 dm_rq_bio_constructor, tio);
331 clone->end_io_data = tio;
333 tio->clone = clone;
338 static void init_tio(struct dm_rq_target_io *tio, struct request *rq,
341 tio->md = md;
342 tio->ti = NULL;
343 tio->clone = NULL;
344 tio->orig = rq;
345 tio->error = 0;
346 tio->completed = 0;
353 memset(&tio->info, 0, sizeof(tio->info));
362 static int map_request(struct dm_rq_target_io *tio)
365 struct dm_target *ti = tio->ti;
366 struct mapped_device *md = tio->md;
367 struct request *rq = tio->orig;
371 r = ti->type->clone_and_map_rq(ti, rq, &tio->info, &clone);
377 if (setup_clone(clone, rq, tio, GFP_ATOMIC)) {
379 ti->type->release_clone_rq(clone, &tio->info);
394 tio->ti->type->release_clone_rq(clone, &tio->info);
395 tio->clone = NULL;
407 dm_requeue_original_request(tio, true);
438 struct dm_rq_target_io *tio = tio_from_request(orig);
440 tio->duration_jiffies = jiffies;
441 tio->n_sectors = blk_rq_sectors(orig);
443 blk_rq_pos(orig), tio->n_sectors, false, 0,
444 &tio->stats_aux);
461 struct dm_rq_target_io *tio = blk_mq_rq_to_pdu(rq);
464 * Must initialize md member of tio, otherwise it won't
467 tio->md = md;
470 /* target-specific per-io data is immediately after the tio */
471 tio->info.ptr = tio + 1;
481 struct dm_rq_target_io *tio = blk_mq_rq_to_pdu(rq);
482 struct mapped_device *md = tio->md;
511 /* Init tio using md established in .init_request */
512 init_tio(tio, rq, md);
515 * Establish tio->ti before calling map_request().
517 tio->ti = ti;
520 if (map_request(tio) == DM_MAPIO_REQUEUE) {
555 /* any target-specific per-io data is immediately after the tio */