Make the mapped device structure accessible to hardware
handlers so error messages can include the device name.

Signed-off-by: Edward Goggin <egoggin@emc.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>

 drivers/md/dm-hw-handler.h |    1 +
 drivers/md/dm-mpath.c      |    3 +++
 drivers/md/dm.c            |    1 +
 3 files changed, 5 insertions(+)

Index: linux-2.6.19/drivers/md/dm-hw-handler.h
===================================================================
--- linux-2.6.19.orig/drivers/md/dm-hw-handler.h	2006-12-06 20:49:24.000000000 +0000
+++ linux-2.6.19/drivers/md/dm-hw-handler.h	2006-12-06 21:18:46.000000000 +0000
@@ -16,6 +16,7 @@
 struct hw_handler_type;
 struct hw_handler {
 	struct hw_handler_type *type;
+	struct mapped_device *md;
 	void *context;
 };
 
Index: linux-2.6.19/drivers/md/dm-mpath.c
===================================================================
--- linux-2.6.19.orig/drivers/md/dm-mpath.c	2006-12-06 20:55:37.000000000 +0000
+++ linux-2.6.19/drivers/md/dm-mpath.c	2006-12-06 21:35:09.000000000 +0000
@@ -666,6 +666,9 @@ static int parse_hw_handler(struct arg_s
 		return -EINVAL;
 	}
 
+	m->hw_handler.md = dm_table_get_md(ti->table);
+	dm_put(m->hw_handler.md);
+
 	r = hwht->create(&m->hw_handler, hw_argc - 1, as->argv);
 	if (r) {
 		dm_put_hw_handler(hwht);
Index: linux-2.6.19/drivers/md/dm.c
===================================================================
--- linux-2.6.19.orig/drivers/md/dm.c	2006-12-06 20:49:32.000000000 +0000
+++ linux-2.6.19/drivers/md/dm.c	2006-12-06 21:35:28.000000000 +0000
@@ -1235,6 +1235,7 @@ void dm_put(struct mapped_device *md)
 		free_dev(md);
 	}
 }
+EXPORT_SYMBOL_GPL(dm_put);
 
 /*
  * Process the deferred bios
