--- drivers/md/dm.c | 9 +++++++++ include/linux/device-mapper.h | 1 + 2 files changed, 10 insertions(+) Index: linux-3.0-rc7/drivers/md/dm.c =================================================================== --- linux-3.0-rc7.orig/drivers/md/dm.c +++ linux-3.0-rc7/drivers/md/dm.c @@ -83,6 +83,15 @@ struct dm_rq_clone_bio_info { struct dm_rq_target_io *tio; }; +/* + * mapinfo is available for targets to use, typically holding a pointer + * to some context information for use in the bio's end_io function. + */ +void dm_set_mapinfo_ptr(struct bio *bio, void *ptr) +{ + ((struct dm_target_io *)bio->bi_private)->info.ptr = ptr; +} + union map_info *dm_get_mapinfo(struct bio *bio) { if (bio && bio->bi_private) Index: linux-3.0-rc7/include/linux/device-mapper.h =================================================================== --- linux-3.0-rc7.orig/include/linux/device-mapper.h +++ linux-3.0-rc7/include/linux/device-mapper.h @@ -303,6 +303,7 @@ int dm_copy_name_and_uuid(struct mapped_ struct gendisk *dm_disk(struct mapped_device *md); int dm_suspended(struct dm_target *ti); int dm_noflush_suspending(struct dm_target *ti); +void dm_set_mapinfo_ptr(struct bio *bio, void *ptr); union map_info *dm_get_mapinfo(struct bio *bio); union map_info *dm_get_rq_mapinfo(struct request *rq);