diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-05 22:20:59 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-05 22:20:59 -0500 |
| commit | 238c6d54830c624f34ac9cf123ac04aebfca5013 (patch) | |
| tree | 43b7f595013483382a3053237c45d9d2824e0295 /include | |
| parent | 8e128ce3318a147903c893de1891f6c2306f8a61 (diff) | |
| parent | a159c1ac5f33c6cf0f5aa3c9d1ccdc82c907ee46 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm
* git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm:
dm snapshot: extend exception store functions
dm snapshot: split out exception store implementations
dm snapshot: rename struct exception_store
dm snapshot: separate out exception store interface
dm mpath: move trigger_event to system workqueue
dm: add name and uuid to sysfs
dm table: rework reference counting
dm: support barriers on simple devices
dm request: extend target interface
dm request: add caches
dm ioctl: allow dm_copy_name_and_uuid to return only one field
dm log: ensure log bitmap fits on log device
dm log: move region_size validation
dm log: avoid reinitialising io_req on every operation
dm: consolidate target deregistration error handling
dm raid1: fix error count
dm log: fix dm_io_client leak on error paths
dm snapshot: change yield to msleep
dm table: drop reference at unbind
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/device-mapper.h | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/include/linux/device-mapper.h b/include/linux/device-mapper.h index c17fd334e574..8209e08969f9 100644 --- a/include/linux/device-mapper.h +++ b/include/linux/device-mapper.h | |||
| @@ -45,6 +45,8 @@ typedef void (*dm_dtr_fn) (struct dm_target *ti); | |||
| 45 | */ | 45 | */ |
| 46 | typedef int (*dm_map_fn) (struct dm_target *ti, struct bio *bio, | 46 | typedef int (*dm_map_fn) (struct dm_target *ti, struct bio *bio, |
| 47 | union map_info *map_context); | 47 | union map_info *map_context); |
| 48 | typedef int (*dm_map_request_fn) (struct dm_target *ti, struct request *clone, | ||
| 49 | union map_info *map_context); | ||
| 48 | 50 | ||
| 49 | /* | 51 | /* |
| 50 | * Returns: | 52 | * Returns: |
| @@ -57,6 +59,9 @@ typedef int (*dm_map_fn) (struct dm_target *ti, struct bio *bio, | |||
| 57 | typedef int (*dm_endio_fn) (struct dm_target *ti, | 59 | typedef int (*dm_endio_fn) (struct dm_target *ti, |
| 58 | struct bio *bio, int error, | 60 | struct bio *bio, int error, |
| 59 | union map_info *map_context); | 61 | union map_info *map_context); |
| 62 | typedef int (*dm_request_endio_fn) (struct dm_target *ti, | ||
| 63 | struct request *clone, int error, | ||
| 64 | union map_info *map_context); | ||
| 60 | 65 | ||
| 61 | typedef void (*dm_flush_fn) (struct dm_target *ti); | 66 | typedef void (*dm_flush_fn) (struct dm_target *ti); |
| 62 | typedef void (*dm_presuspend_fn) (struct dm_target *ti); | 67 | typedef void (*dm_presuspend_fn) (struct dm_target *ti); |
| @@ -75,6 +80,13 @@ typedef int (*dm_ioctl_fn) (struct dm_target *ti, unsigned int cmd, | |||
| 75 | typedef int (*dm_merge_fn) (struct dm_target *ti, struct bvec_merge_data *bvm, | 80 | typedef int (*dm_merge_fn) (struct dm_target *ti, struct bvec_merge_data *bvm, |
| 76 | struct bio_vec *biovec, int max_size); | 81 | struct bio_vec *biovec, int max_size); |
| 77 | 82 | ||
| 83 | /* | ||
| 84 | * Returns: | ||
| 85 | * 0: The target can handle the next I/O immediately. | ||
| 86 | * 1: The target can't handle the next I/O immediately. | ||
| 87 | */ | ||
| 88 | typedef int (*dm_busy_fn) (struct dm_target *ti); | ||
| 89 | |||
| 78 | void dm_error(const char *message); | 90 | void dm_error(const char *message); |
| 79 | 91 | ||
| 80 | /* | 92 | /* |
| @@ -100,14 +112,23 @@ void dm_put_device(struct dm_target *ti, struct dm_dev *d); | |||
| 100 | /* | 112 | /* |
| 101 | * Information about a target type | 113 | * Information about a target type |
| 102 | */ | 114 | */ |
| 115 | |||
| 116 | /* | ||
| 117 | * Target features | ||
| 118 | */ | ||
| 119 | #define DM_TARGET_SUPPORTS_BARRIERS 0x00000001 | ||
| 120 | |||
| 103 | struct target_type { | 121 | struct target_type { |
| 122 | uint64_t features; | ||
| 104 | const char *name; | 123 | const char *name; |
| 105 | struct module *module; | 124 | struct module *module; |
| 106 | unsigned version[3]; | 125 | unsigned version[3]; |
| 107 | dm_ctr_fn ctr; | 126 | dm_ctr_fn ctr; |
| 108 | dm_dtr_fn dtr; | 127 | dm_dtr_fn dtr; |
| 109 | dm_map_fn map; | 128 | dm_map_fn map; |
| 129 | dm_map_request_fn map_rq; | ||
| 110 | dm_endio_fn end_io; | 130 | dm_endio_fn end_io; |
| 131 | dm_request_endio_fn rq_end_io; | ||
| 111 | dm_flush_fn flush; | 132 | dm_flush_fn flush; |
| 112 | dm_presuspend_fn presuspend; | 133 | dm_presuspend_fn presuspend; |
| 113 | dm_postsuspend_fn postsuspend; | 134 | dm_postsuspend_fn postsuspend; |
| @@ -117,6 +138,7 @@ struct target_type { | |||
| 117 | dm_message_fn message; | 138 | dm_message_fn message; |
| 118 | dm_ioctl_fn ioctl; | 139 | dm_ioctl_fn ioctl; |
| 119 | dm_merge_fn merge; | 140 | dm_merge_fn merge; |
| 141 | dm_busy_fn busy; | ||
| 120 | }; | 142 | }; |
| 121 | 143 | ||
| 122 | struct io_restrictions { | 144 | struct io_restrictions { |
| @@ -157,8 +179,7 @@ struct dm_target { | |||
| 157 | }; | 179 | }; |
| 158 | 180 | ||
| 159 | int dm_register_target(struct target_type *t); | 181 | int dm_register_target(struct target_type *t); |
| 160 | int dm_unregister_target(struct target_type *t); | 182 | void dm_unregister_target(struct target_type *t); |
| 161 | |||
| 162 | 183 | ||
| 163 | /*----------------------------------------------------------------- | 184 | /*----------------------------------------------------------------- |
| 164 | * Functions for creating and manipulating mapped devices. | 185 | * Functions for creating and manipulating mapped devices. |
| @@ -276,6 +297,9 @@ void *dm_vcalloc(unsigned long nmemb, unsigned long elem_size); | |||
| 276 | *---------------------------------------------------------------*/ | 297 | *---------------------------------------------------------------*/ |
| 277 | #define DM_NAME "device-mapper" | 298 | #define DM_NAME "device-mapper" |
| 278 | 299 | ||
| 300 | #define DMCRIT(f, arg...) \ | ||
| 301 | printk(KERN_CRIT DM_NAME ": " DM_MSG_PREFIX ": " f "\n", ## arg) | ||
| 302 | |||
| 279 | #define DMERR(f, arg...) \ | 303 | #define DMERR(f, arg...) \ |
| 280 | printk(KERN_ERR DM_NAME ": " DM_MSG_PREFIX ": " f "\n", ## arg) | 304 | printk(KERN_ERR DM_NAME ": " DM_MSG_PREFIX ": " f "\n", ## arg) |
| 281 | #define DMERR_LIMIT(f, arg...) \ | 305 | #define DMERR_LIMIT(f, arg...) \ |
