From: Heinz Mauelshagen <[email-masked]>

Move the dirty region log code into a separate module so
other targets can share the code.

Signed-off-by: Heinz Mauelshagen <[email-masked]>
Signed-off-by: Alasdair G Kergon <[email-masked]>
---
 drivers/md/Makefile   |    4 ++--
 drivers/md/dm-log.c   |    9 ++++++++-
 drivers/md/dm-raid1.c |   10 +---------
 3 files changed, 11 insertions(+), 12 deletions(-)

Index: linux-2.6.25/drivers/md/Makefile
===================================================================
--- linux-2.6.25.orig/drivers/md/Makefile	2008-04-24 17:43:47.000000000 +0100
+++ linux-2.6.25/drivers/md/Makefile	2008-04-24 18:00:26.000000000 +0100
@@ -6,7 +6,7 @@ dm-mod-objs	:= dm.o dm-table.o dm-target
 		   dm-ioctl.o dm-io.o kcopyd.o
 dm-multipath-objs := dm-hw-handler.o dm-path-selector.o dm-mpath.o
 dm-snapshot-objs := dm-snap.o dm-exception-store.o
-dm-mirror-objs	:= dm-log.o dm-raid1.o
+dm-mirror-objs	:= dm-raid1.o
 dm-rdac-objs	:= dm-mpath-rdac.o
 dm-hp-sw-objs	:= dm-mpath-hp-sw.o
 md-mod-objs     := md.o bitmap.o
@@ -39,7 +39,7 @@ obj-$(CONFIG_DM_MULTIPATH_EMC)	+= dm-emc
 obj-$(CONFIG_DM_MULTIPATH_HP)	+= dm-hp-sw.o
 obj-$(CONFIG_DM_MULTIPATH_RDAC)	+= dm-rdac.o
 obj-$(CONFIG_DM_SNAPSHOT)	+= dm-snapshot.o
-obj-$(CONFIG_DM_MIRROR)		+= dm-mirror.o
+obj-$(CONFIG_DM_MIRROR)		+= dm-mirror.o dm-log.o
 obj-$(CONFIG_DM_ZERO)		+= dm-zero.o
 
 quiet_cmd_unroll = UNROLL  $@
Index: linux-2.6.25/drivers/md/dm-log.c
===================================================================
--- linux-2.6.25.orig/drivers/md/dm-log.c	2008-04-24 18:00:25.000000000 +0100
+++ linux-2.6.25/drivers/md/dm-log.c	2008-04-24 18:00:26.000000000 +0100
@@ -777,7 +777,7 @@ int __init dm_dirty_log_init(void)
 	return r;
 }
 
-void dm_dirty_log_exit(void)
+void __exit dm_dirty_log_exit(void)
 {
 	dm_unregister_dirty_log_type(&_disk_type);
 	dm_unregister_dirty_log_type(&_core_type);
@@ -787,3 +787,10 @@ EXPORT_SYMBOL(dm_register_dirty_log_type
 EXPORT_SYMBOL(dm_unregister_dirty_log_type);
 EXPORT_SYMBOL(dm_create_dirty_log);
 EXPORT_SYMBOL(dm_destroy_dirty_log);
+
+module_init(dm_dirty_log_init);
+module_exit(dm_dirty_log_exit);
+
+MODULE_DESCRIPTION(DM_NAME " dirty region log");
+MODULE_AUTHOR("Joe Thornber, Heinz Mauelshagen <[email-masked]>");
+MODULE_LICENSE("GPL");
Index: linux-2.6.25/drivers/md/dm-raid1.c
===================================================================
--- linux-2.6.25.orig/drivers/md/dm-raid1.c	2008-04-24 18:00:25.000000000 +0100
+++ linux-2.6.25/drivers/md/dm-raid1.c	2008-04-24 18:00:26.000000000 +0100
@@ -1862,15 +1862,9 @@ static int __init dm_mirror_init(void)
 {
 	int r;
 
-	r = dm_dirty_log_init();
-	if (r)
-		return r;
-
 	r = dm_register_target(&mirror_target);
-	if (r < 0) {
+	if (r < 0)
 		DMERR("Failed to register mirror target");
-		dm_dirty_log_exit();
-	}
 
 	return r;
 }
@@ -1882,8 +1876,6 @@ static void __exit dm_mirror_exit(void)
 	r = dm_unregister_target(&mirror_target);
 	if (r < 0)
 		DMERR("unregister failed %d", r);
-
-	dm_dirty_log_exit();
 }
 
 /* Module hooks */