Commit 22a1ceb1e6a7fbce95a1531ff10bb4fb036d4a37

Authored by Heinz Mauelshagen
Committed by Alasdair G Kergon
1 parent e01fd7eeb0

dm io: clean interface

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>

Showing 8 changed files with 33 additions and 25 deletions Side-by-side Diff

drivers/md/dm-exception-store.c
... ... @@ -159,7 +159,7 @@
159 159 }
160 160  
161 161 struct mdata_req {
162   - struct io_region *where;
  162 + struct dm_io_region *where;
163 163 struct dm_io_request *io_req;
164 164 struct work_struct work;
165 165 int result;
... ... @@ -177,7 +177,7 @@
177 177 */
178 178 static int chunk_io(struct pstore *ps, uint32_t chunk, int rw, int metadata)
179 179 {
180   - struct io_region where = {
  180 + struct dm_io_region where = {
181 181 .bdev = ps->snap->cow->bdev,
182 182 .sector = ps->snap->chunk_size * chunk,
183 183 .count = ps->snap->chunk_size,
... ... @@ -6,6 +6,7 @@
6 6 */
7 7  
8 8 #include "dm-io.h"
  9 +#include "dm.h"
9 10  
10 11 #include <linux/bio.h>
11 12 #include <linux/mempool.h>
... ... @@ -271,7 +272,7 @@
271 272 /*-----------------------------------------------------------------
272 273 * IO routines that accept a list of pages.
273 274 *---------------------------------------------------------------*/
274   -static void do_region(int rw, unsigned int region, struct io_region *where,
  275 +static void do_region(int rw, unsigned region, struct dm_io_region *where,
275 276 struct dpages *dp, struct io *io)
276 277 {
277 278 struct bio *bio;
... ... @@ -320,7 +321,7 @@
320 321 }
321 322  
322 323 static void dispatch_io(int rw, unsigned int num_regions,
323   - struct io_region *where, struct dpages *dp,
  324 + struct dm_io_region *where, struct dpages *dp,
324 325 struct io *io, int sync)
325 326 {
326 327 int i;
... ... @@ -347,7 +348,7 @@
347 348 }
348 349  
349 350 static int sync_io(struct dm_io_client *client, unsigned int num_regions,
350   - struct io_region *where, int rw, struct dpages *dp,
  351 + struct dm_io_region *where, int rw, struct dpages *dp,
351 352 unsigned long *error_bits)
352 353 {
353 354 struct io io;
... ... @@ -384,7 +385,7 @@
384 385 }
385 386  
386 387 static int async_io(struct dm_io_client *client, unsigned int num_regions,
387   - struct io_region *where, int rw, struct dpages *dp,
  388 + struct dm_io_region *where, int rw, struct dpages *dp,
388 389 io_notify_fn fn, void *context)
389 390 {
390 391 struct io *io;
... ... @@ -438,7 +439,7 @@
438 439 * New collapsed (a)synchronous interface
439 440 */
440 441 int dm_io(struct dm_io_request *io_req, unsigned num_regions,
441   - struct io_region *where, unsigned long *sync_error_bits)
  442 + struct dm_io_region *where, unsigned long *sync_error_bits)
442 443 {
443 444 int r;
444 445 struct dpages dp;
1 1 /*
2 2 * Copyright (C) 2003 Sistina Software
  3 + * Copyright (C) 2004 - 2008 Red Hat, Inc. All rights reserved.
3 4 *
  5 + * Device-Mapper low-level I/O.
  6 + *
4 7 * This file is released under the GPL.
5 8 */
6 9  
7   -#ifndef _DM_IO_H
8   -#define _DM_IO_H
  10 +#ifndef _LINUX_DM_IO_H
  11 +#define _LINUX_DM_IO_H
9 12  
10   -#include "dm.h"
  13 +#ifdef __KERNEL__
11 14  
12   -struct io_region {
  15 +#include <linux/types.h>
  16 +
  17 +struct dm_io_region {
13 18 struct block_device *bdev;
14 19 sector_t sector;
15 20 sector_t count; /* If this is zero the region is ignored. */
16 21  
... ... @@ -74,7 +79,8 @@
74 79 * error occurred doing io to the corresponding region.
75 80 */
76 81 int dm_io(struct dm_io_request *io_req, unsigned num_regions,
77   - struct io_region *region, unsigned long *sync_error_bits);
  82 + struct dm_io_region *region, unsigned long *sync_error_bits);
78 83  
79   -#endif
  84 +#endif /* __KERNEL__ */
  85 +#endif /* _LINUX_DM_IO_H */
... ... @@ -208,7 +208,7 @@
208 208 struct dm_dev *log_dev;
209 209 struct log_header header;
210 210  
211   - struct io_region header_location;
  211 + struct dm_io_region header_location;
212 212 struct log_header *disk_header;
213 213 };
214 214  
drivers/md/dm-raid1.c
... ... @@ -788,7 +788,7 @@
788 788 {
789 789 int r;
790 790 unsigned int i;
791   - struct io_region from, to[KCOPYD_MAX_REGIONS], *dest;
  791 + struct dm_io_region from, to[KCOPYD_MAX_REGIONS], *dest;
792 792 struct mirror *m;
793 793 unsigned long flags = 0;
794 794  
... ... @@ -907,7 +907,7 @@
907 907 bio->bi_sector = map_sector(m, bio);
908 908 }
909 909  
910   -static void map_region(struct io_region *io, struct mirror *m,
  910 +static void map_region(struct dm_io_region *io, struct mirror *m,
911 911 struct bio *bio)
912 912 {
913 913 io->bdev = m->dev->bdev;
... ... @@ -949,7 +949,7 @@
949 949 /* Asynchronous read. */
950 950 static void read_async_bio(struct mirror *m, struct bio *bio)
951 951 {
952   - struct io_region io;
  952 + struct dm_io_region io;
953 953 struct dm_io_request io_req = {
954 954 .bi_rw = READ,
955 955 .mem.type = DM_IO_BVEC,
... ... @@ -1105,7 +1105,7 @@
1105 1105 static void do_write(struct mirror_set *ms, struct bio *bio)
1106 1106 {
1107 1107 unsigned int i;
1108   - struct io_region io[ms->nr_mirrors], *dest = io;
  1108 + struct dm_io_region io[ms->nr_mirrors], *dest = io;
1109 1109 struct mirror *m;
1110 1110 struct dm_io_request io_req = {
1111 1111 .bi_rw = WRITE,
drivers/md/dm-snap.c
... ... @@ -824,7 +824,7 @@
824 824 static void start_copy(struct dm_snap_pending_exception *pe)
825 825 {
826 826 struct dm_snapshot *s = pe->snap;
827   - struct io_region src, dest;
  827 + struct dm_io_region src, dest;
828 828 struct block_device *bdev = s->origin->bdev;
829 829 sector_t dev_size;
830 830  
... ... @@ -25,6 +25,7 @@
25 25 #include <linux/mutex.h>
26 26  
27 27 #include "kcopyd.h"
  28 +#include "dm.h"
28 29  
29 30 static struct workqueue_struct *_kcopyd_wq;
30 31 static struct work_struct _kcopyd_work;
31 32  
... ... @@ -175,13 +176,13 @@
175 176 * Either READ or WRITE
176 177 */
177 178 int rw;
178   - struct io_region source;
  179 + struct dm_io_region source;
179 180  
180 181 /*
181 182 * The destinations for the transfer.
182 183 */
183 184 unsigned int num_dests;
184   - struct io_region dests[KCOPYD_MAX_REGIONS];
  185 + struct dm_io_region dests[KCOPYD_MAX_REGIONS];
185 186  
186 187 sector_t offset;
187 188 unsigned int nr_pages;
... ... @@ -526,8 +527,8 @@
526 527 segment_complete(0, 0u, job);
527 528 }
528 529  
529   -int kcopyd_copy(struct kcopyd_client *kc, struct io_region *from,
530   - unsigned int num_dests, struct io_region *dests,
  530 +int kcopyd_copy(struct kcopyd_client *kc, struct dm_io_region *from,
  531 + unsigned int num_dests, struct dm_io_region *dests,
531 532 unsigned int flags, kcopyd_notify_fn fn, void *context)
532 533 {
533 534 struct kcopyd_job *job;
... ... @@ -35,8 +35,8 @@
35 35 typedef void (*kcopyd_notify_fn)(int read_err, unsigned long write_err,
36 36 void *context);
37 37  
38   -int kcopyd_copy(struct kcopyd_client *kc, struct io_region *from,
39   - unsigned int num_dests, struct io_region *dests,
  38 +int kcopyd_copy(struct kcopyd_client *kc, struct dm_io_region *from,
  39 + unsigned num_dests, struct dm_io_region *dests,
40 40 unsigned int flags, kcopyd_notify_fn fn, void *context);
41 41  
42 42 #endif