Lines Matching refs:clone
85 struct request *orig, *clone; member
102 struct bio clone; member
609 bio_put(&tio->clone); in free_tio()
960 struct dm_target_io *tio = container_of(bio, struct dm_target_io, clone); in clone_endio()
996 static void end_clone_bio(struct bio *clone, int error) in end_clone_bio() argument
999 container_of(clone, struct dm_rq_clone_bio_info, clone); in end_clone_bio()
1004 bio_put(clone); in end_clone_bio()
1077 static void free_rq_clone(struct request *clone) in free_rq_clone() argument
1079 struct dm_rq_target_io *tio = clone->end_io_data; in free_rq_clone()
1082 blk_rq_unprep_clone(clone); in free_rq_clone()
1086 tio->ti->type->release_clone_rq(clone); in free_rq_clone()
1089 free_clone_request(md, clone); in free_rq_clone()
1105 static void dm_end_request(struct request *clone, int error) in dm_end_request() argument
1107 int rw = rq_data_dir(clone); in dm_end_request()
1108 struct dm_rq_target_io *tio = clone->end_io_data; in dm_end_request()
1113 rq->errors = clone->errors; in dm_end_request()
1114 rq->resid_len = clone->resid_len; in dm_end_request()
1122 rq->sense_len = clone->sense_len; in dm_end_request()
1125 free_rq_clone(clone); in dm_end_request()
1136 struct request *clone = tio->clone; in dm_unprep_request() local
1143 if (clone) in dm_unprep_request()
1144 free_rq_clone(clone); in dm_unprep_request()
1180 static void dm_requeue_unmapped_request(struct request *clone) in dm_requeue_unmapped_request() argument
1182 struct dm_rq_target_io *tio = clone->end_io_data; in dm_requeue_unmapped_request()
1225 static void dm_done(struct request *clone, int error, bool mapped) in dm_done() argument
1228 struct dm_rq_target_io *tio = clone->end_io_data; in dm_done()
1235 r = rq_end_io(tio->ti, clone, error, &tio->info); in dm_done()
1238 if (unlikely(r == -EREMOTEIO && (clone->cmd_flags & REQ_WRITE_SAME) && in dm_done()
1239 !clone->q->limits.max_write_same_sectors)) in dm_done()
1244 dm_end_request(clone, r); in dm_done()
1250 dm_requeue_unmapped_request(clone); in dm_done()
1264 struct request *clone = tio->clone; in dm_softirq_done() local
1267 if (!clone) { in dm_softirq_done()
1283 dm_done(clone, tio->error, mapped); in dm_softirq_done()
1316 static void end_clone_request(struct request *clone, int error) in end_clone_request() argument
1318 struct dm_rq_target_io *tio = clone->end_io_data; in end_clone_request()
1320 if (!clone->q->mq_ops) { in end_clone_request()
1327 __blk_put_request(clone->q, clone); in end_clone_request()
1420 struct dm_target_io *tio = container_of(bio, struct dm_target_io, clone); in dm_accept_partial_bio()
1435 struct bio *clone = &tio->clone; in __map_bio() local
1438 clone->bi_end_io = clone_endio; in __map_bio()
1446 sector = clone->bi_iter.bi_sector; in __map_bio()
1447 r = ti->type->map(ti, clone); in __map_bio()
1451 trace_block_bio_remap(bdev_get_queue(clone->bi_bdev), clone, in __map_bio()
1454 generic_make_request(clone); in __map_bio()
1487 struct bio *clone = &tio->clone; in clone_bio() local
1489 __bio_clone_fast(clone, bio); in clone_bio()
1492 bio_integrity_clone(clone, bio, GFP_NOIO); in clone_bio()
1494 bio_advance(clone, to_bytes(sector - clone->bi_iter.bi_sector)); in clone_bio()
1495 clone->bi_iter.bi_size = to_bytes(len); in clone_bio()
1498 bio_integrity_trim(clone, 0, len); in clone_bio()
1506 struct bio *clone; in alloc_tio() local
1508 clone = bio_alloc_bioset(GFP_NOIO, 0, ci->md->bs); in alloc_tio()
1509 tio = container_of(clone, struct dm_target_io, clone); in alloc_tio()
1523 struct bio *clone = &tio->clone; in __clone_and_map_simple_bio() local
1527 __bio_clone_fast(clone, ci->bio); in __clone_and_map_simple_bio()
1529 bio_setup_sector(clone, ci->sector, *len); in __clone_and_map_simple_bio()
1806 static void dm_dispatch_clone_request(struct request *clone, struct request *rq) in dm_dispatch_clone_request() argument
1810 if (blk_queue_io_stat(clone->q)) in dm_dispatch_clone_request()
1811 clone->cmd_flags |= REQ_IO_STAT; in dm_dispatch_clone_request()
1813 clone->start_time = jiffies; in dm_dispatch_clone_request()
1814 r = blk_insert_cloned_request(clone->q, clone); in dm_dispatch_clone_request()
1825 container_of(bio, struct dm_rq_clone_bio_info, clone); in dm_rq_bio_constructor()
1834 static int setup_clone(struct request *clone, struct request *rq, in setup_clone() argument
1839 r = blk_rq_prep_clone(clone, rq, tio->md->bs, gfp_mask, in setup_clone()
1844 clone->cmd = rq->cmd; in setup_clone()
1845 clone->cmd_len = rq->cmd_len; in setup_clone()
1846 clone->sense = rq->sense; in setup_clone()
1847 clone->end_io = end_clone_request; in setup_clone()
1848 clone->end_io_data = tio; in setup_clone()
1850 tio->clone = clone; in setup_clone()
1862 bool alloc_clone = !tio->clone; in clone_rq()
1863 struct request *clone; in clone_rq() local
1866 clone = alloc_clone_request(md, gfp_mask); in clone_rq()
1867 if (!clone) in clone_rq()
1870 clone = tio->clone; in clone_rq()
1872 blk_rq_init(NULL, clone); in clone_rq()
1873 if (setup_clone(clone, rq, tio, gfp_mask)) { in clone_rq()
1876 free_clone_request(md, clone); in clone_rq()
1880 return clone; in clone_rq()
1890 tio->clone = NULL; in init_tio()
1958 struct request *clone = NULL; in map_request() local
1960 if (tio->clone) { in map_request()
1961 clone = tio->clone; in map_request()
1962 r = ti->type->map_rq(ti, clone, &tio->info); in map_request()
1964 r = ti->type->clone_and_map_rq(ti, rq, &tio->info, &clone); in map_request()
1972 if (setup_clone(clone, rq, tio, GFP_ATOMIC)) { in map_request()
1974 ti->type->release_clone_rq(clone); in map_request()
1985 trace_block_rq_remap(clone->q, clone, disk_devt(dm_disk(md)), in map_request()
1987 dm_dispatch_clone_request(clone, rq); in map_request()
1991 dm_requeue_unmapped_request(clone); in map_request()
2751 tio->clone = (void *)blk_mq_rq_to_pdu(rq) + sizeof(struct dm_rq_target_io); in dm_mq_queue_rq()
3552 …oundup(per_bio_data_size, __alignof__(struct dm_target_io)) + offsetof(struct dm_target_io, clone); in dm_alloc_md_mempools()
3564 front_pad = offsetof(struct dm_rq_clone_bio_info, clone); in dm_alloc_md_mempools()