---
 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);
 
