From: Heinz Mauelshagen <hjm@redhat.com>

Clean up the dm-io interface to prepare for publishing it in include/linux.

Signed-off-by: Heinz Mauelshagen <hjm@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
---
 drivers/md/dm-exception-store.c |    4 ++--
 drivers/md/dm-io.c              |   11 ++++++-----
 drivers/md/dm-io.h              |   18 ++++++++++++------
 drivers/md/dm-log.c             |    2 +-
 drivers/md/dm-raid1.c           |    8 ++++----
 drivers/md/dm-snap.c            |    2 +-
 drivers/md/kcopyd.c             |    9 +++++----
 drivers/md/kcopyd.h             |    4 ++--
 8 files changed, 33 insertions(+), 25 deletions(-)

Index: linux-2.6.25/drivers/md/dm-exception-store.c
===================================================================
--- linux-2.6.25.orig/drivers/md/dm-exception-store.c	2008-04-24 18:00:16.000000000 +0100
+++ linux-2.6.25/drivers/md/dm-exception-store.c	2008-04-24 18:00:28.000000000 +0100
@@ -159,7 +159,7 @@ static void free_area(struct pstore *ps)
 }
 
 struct mdata_req {
-	struct io_region *where;
+	struct dm_io_region *where;
 	struct dm_io_request *io_req;
 	struct work_struct work;
 	int result;
@@ -177,7 +177,7 @@ static void do_metadata(struct work_stru
  */
 static int chunk_io(struct pstore *ps, uint32_t chunk, int rw, int metadata)
 {
-	struct io_region where = {
+	struct dm_io_region where = {
 		.bdev = ps->snap->cow->bdev,
 		.sector = ps->snap->chunk_size * chunk,
 		.count = ps->snap->chunk_size,
Index: linux-2.6.25/drivers/md/dm-io.c
===================================================================
--- linux-2.6.25.orig/drivers/md/dm-io.c	2008-04-24 18:00:27.000000000 +0100
+++ linux-2.6.25/drivers/md/dm-io.c	2008-04-24 18:00:28.000000000 +0100
@@ -6,6 +6,7 @@
  */
 
 #include "dm-io.h"
+#include "dm.h"
 
 #include <linux/bio.h>
 #include <linux/mempool.h>
@@ -271,7 +272,7 @@ static void km_dp_init(struct dpages *dp
 /*-----------------------------------------------------------------
  * IO routines that accept a list of pages.
  *---------------------------------------------------------------*/
-static void do_region(int rw, unsigned int region, struct io_region *where,
+static void do_region(int rw, unsigned region, struct dm_io_region *where,
 		      struct dpages *dp, struct io *io)
 {
 	struct bio *bio;
@@ -320,7 +321,7 @@ static void do_region(int rw, unsigned i
 }
 
 static void dispatch_io(int rw, unsigned int num_regions,
-			struct io_region *where, struct dpages *dp,
+			struct dm_io_region *where, struct dpages *dp,
 			struct io *io, int sync)
 {
 	int i;
@@ -347,7 +348,7 @@ static void dispatch_io(int rw, unsigned
 }
 
 static int sync_io(struct dm_io_client *client, unsigned int num_regions,
-		   struct io_region *where, int rw, struct dpages *dp,
+		   struct dm_io_region *where, int rw, struct dpages *dp,
 		   unsigned long *error_bits)
 {
 	struct io io;
@@ -384,7 +385,7 @@ static int sync_io(struct dm_io_client *
 }
 
 static int async_io(struct dm_io_client *client, unsigned int num_regions,
-		    struct io_region *where, int rw, struct dpages *dp,
+		    struct dm_io_region *where, int rw, struct dpages *dp,
 		    io_notify_fn fn, void *context)
 {
 	struct io *io;
@@ -438,7 +439,7 @@ static int dp_init(struct dm_io_request 
  * New collapsed (a)synchronous interface
  */
 int dm_io(struct dm_io_request *io_req, unsigned num_regions,
-	  struct io_region *where, unsigned long *sync_error_bits)
+	  struct dm_io_region *where, unsigned long *sync_error_bits)
 {
 	int r;
 	struct dpages dp;
Index: linux-2.6.25/drivers/md/dm-io.h
===================================================================
--- linux-2.6.25.orig/drivers/md/dm-io.h	2008-04-24 17:43:47.000000000 +0100
+++ linux-2.6.25/drivers/md/dm-io.h	2008-04-24 18:00:28.000000000 +0100
@@ -1,15 +1,20 @@
 /*
  * Copyright (C) 2003 Sistina Software
+ * Copyright (C) 2004 - 2008 Red Hat, Inc. All rights reserved.
+ *
+ * Device-Mapper low-level I/O.
  *
  * This file is released under the GPL.
  */
 
-#ifndef _DM_IO_H
-#define _DM_IO_H
+#ifndef _LINUX_DM_IO_H
+#define _LINUX_DM_IO_H
+
+#ifdef __KERNEL__
 
-#include "dm.h"
+#include <linux/types.h>
 
-struct io_region {
+struct dm_io_region {
 	struct block_device *bdev;
 	sector_t sector;
 	sector_t count;		/* If this is zero the region is ignored. */
@@ -74,6 +79,7 @@ void dm_io_client_destroy(struct dm_io_c
  * error occurred doing io to the corresponding region.
  */
 int dm_io(struct dm_io_request *io_req, unsigned num_regions,
-	  struct io_region *region, unsigned long *sync_error_bits);
+	  struct dm_io_region *region, unsigned long *sync_error_bits);
 
-#endif
+#endif	/* __KERNEL__ */
+#endif	/* _LINUX_DM_IO_H */
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:26.000000000 +0100
+++ linux-2.6.25/drivers/md/dm-log.c	2008-04-24 18:00:28.000000000 +0100
@@ -208,7 +208,7 @@ struct log_c {
 	struct dm_dev *log_dev;
 	struct log_header header;
 
-	struct io_region header_location;
+	struct dm_io_region header_location;
 	struct log_header *disk_header;
 };
 
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:26.000000000 +0100
+++ linux-2.6.25/drivers/md/dm-raid1.c	2008-04-24 18:00:28.000000000 +0100
@@ -788,7 +788,7 @@ static int recover(struct mirror_set *ms
 {
 	int r;
 	unsigned int i;
-	struct io_region from, to[KCOPYD_MAX_REGIONS], *dest;
+	struct dm_io_region from, to[KCOPYD_MAX_REGIONS], *dest;
 	struct mirror *m;
 	unsigned long flags = 0;
 
@@ -907,7 +907,7 @@ static void map_bio(struct mirror *m, st
 	bio->bi_sector = map_sector(m, bio);
 }
 
-static void map_region(struct io_region *io, struct mirror *m,
+static void map_region(struct dm_io_region *io, struct mirror *m,
 		       struct bio *bio)
 {
 	io->bdev = m->dev->bdev;
@@ -949,7 +949,7 @@ static void read_callback(unsigned long 
 /* Asynchronous read. */
 static void read_async_bio(struct mirror *m, struct bio *bio)
 {
-	struct io_region io;
+	struct dm_io_region io;
 	struct dm_io_request io_req = {
 		.bi_rw = READ,
 		.mem.type = DM_IO_BVEC,
@@ -1105,7 +1105,7 @@ out:
 static void do_write(struct mirror_set *ms, struct bio *bio)
 {
 	unsigned int i;
-	struct io_region io[ms->nr_mirrors], *dest = io;
+	struct dm_io_region io[ms->nr_mirrors], *dest = io;
 	struct mirror *m;
 	struct dm_io_request io_req = {
 		.bi_rw = WRITE,
Index: linux-2.6.25/drivers/md/dm-snap.c
===================================================================
--- linux-2.6.25.orig/drivers/md/dm-snap.c	2008-04-24 18:00:26.000000000 +0100
+++ linux-2.6.25/drivers/md/dm-snap.c	2008-04-24 18:00:28.000000000 +0100
@@ -824,7 +824,7 @@ static void copy_callback(int read_err, 
 static void start_copy(struct dm_snap_pending_exception *pe)
 {
 	struct dm_snapshot *s = pe->snap;
-	struct io_region src, dest;
+	struct dm_io_region src, dest;
 	struct block_device *bdev = s->origin->bdev;
 	sector_t dev_size;
 
Index: linux-2.6.25/drivers/md/kcopyd.c
===================================================================
--- linux-2.6.25.orig/drivers/md/kcopyd.c	2008-04-24 17:43:47.000000000 +0100
+++ linux-2.6.25/drivers/md/kcopyd.c	2008-04-24 18:00:28.000000000 +0100
@@ -25,6 +25,7 @@
 #include <linux/mutex.h>
 
 #include "kcopyd.h"
+#include "dm.h"
 
 static struct workqueue_struct *_kcopyd_wq;
 static struct work_struct _kcopyd_work;
@@ -175,13 +176,13 @@ struct kcopyd_job {
 	 * Either READ or WRITE
 	 */
 	int rw;
-	struct io_region source;
+	struct dm_io_region source;
 
 	/*
 	 * The destinations for the transfer.
 	 */
 	unsigned int num_dests;
-	struct io_region dests[KCOPYD_MAX_REGIONS];
+	struct dm_io_region dests[KCOPYD_MAX_REGIONS];
 
 	sector_t offset;
 	unsigned int nr_pages;
@@ -526,8 +527,8 @@ static void split_job(struct kcopyd_job 
 		segment_complete(0, 0u, job);
 }
 
-int kcopyd_copy(struct kcopyd_client *kc, struct io_region *from,
-		unsigned int num_dests, struct io_region *dests,
+int kcopyd_copy(struct kcopyd_client *kc, struct dm_io_region *from,
+		unsigned int num_dests, struct dm_io_region *dests,
 		unsigned int flags, kcopyd_notify_fn fn, void *context)
 {
 	struct kcopyd_job *job;
Index: linux-2.6.25/drivers/md/kcopyd.h
===================================================================
--- linux-2.6.25.orig/drivers/md/kcopyd.h	2008-04-24 17:43:47.000000000 +0100
+++ linux-2.6.25/drivers/md/kcopyd.h	2008-04-24 18:00:28.000000000 +0100
@@ -35,8 +35,8 @@ void kcopyd_client_destroy(struct kcopyd
 typedef void (*kcopyd_notify_fn)(int read_err, unsigned long write_err,
 				 void *context);
 
-int kcopyd_copy(struct kcopyd_client *kc, struct io_region *from,
-		unsigned int num_dests, struct io_region *dests,
+int kcopyd_copy(struct kcopyd_client *kc, struct dm_io_region *from,
+		unsigned num_dests, struct dm_io_region *dests,
 		unsigned int flags, kcopyd_notify_fn fn, void *context);
 
 #endif
