aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/device-mapper.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/device-mapper.h')
-rw-r--r--include/linux/device-mapper.h104
1 files changed, 102 insertions, 2 deletions
diff --git a/include/linux/device-mapper.h b/include/linux/device-mapper.h
index aee10b2ea4c6..010c8c5eeb37 100644
--- a/include/linux/device-mapper.h
+++ b/include/linux/device-mapper.h
@@ -8,9 +8,12 @@
8#ifndef _LINUX_DEVICE_MAPPER_H 8#ifndef _LINUX_DEVICE_MAPPER_H
9#define _LINUX_DEVICE_MAPPER_H 9#define _LINUX_DEVICE_MAPPER_H
10 10
11#ifdef __KERNEL__
12
11struct dm_target; 13struct dm_target;
12struct dm_table; 14struct dm_table;
13struct dm_dev; 15struct dm_dev;
16struct mapped_device;
14 17
15typedef enum { STATUSTYPE_INFO, STATUSTYPE_TABLE } status_type_t; 18typedef enum { STATUSTYPE_INFO, STATUSTYPE_TABLE } status_type_t;
16 19
@@ -78,7 +81,7 @@ void dm_put_device(struct dm_target *ti, struct dm_dev *d);
78struct target_type { 81struct target_type {
79 const char *name; 82 const char *name;
80 struct module *module; 83 struct module *module;
81 unsigned version[3]; 84 unsigned version[3];
82 dm_ctr_fn ctr; 85 dm_ctr_fn ctr;
83 dm_dtr_fn dtr; 86 dm_dtr_fn dtr;
84 dm_map_fn map; 87 dm_map_fn map;
@@ -128,4 +131,101 @@ struct dm_target {
128int dm_register_target(struct target_type *t); 131int dm_register_target(struct target_type *t);
129int dm_unregister_target(struct target_type *t); 132int dm_unregister_target(struct target_type *t);
130 133
131#endif /* _LINUX_DEVICE_MAPPER_H */ 134
135/*-----------------------------------------------------------------
136 * Functions for creating and manipulating mapped devices.
137 * Drop the reference with dm_put when you finish with the object.
138 *---------------------------------------------------------------*/
139
140/*
141 * DM_ANY_MINOR chooses the next available minor number.
142 */
143#define DM_ANY_MINOR (-1)
144int dm_create(int minor, struct mapped_device **md);
145
146/*
147 * Reference counting for md.
148 */
149struct mapped_device *dm_get_md(dev_t dev);
150void dm_get(struct mapped_device *md);
151void dm_put(struct mapped_device *md);
152
153/*
154 * An arbitrary pointer may be stored alongside a mapped device.
155 */
156void dm_set_mdptr(struct mapped_device *md, void *ptr);
157void *dm_get_mdptr(struct mapped_device *md);
158
159/*
160 * A device can still be used while suspended, but I/O is deferred.
161 */
162int dm_suspend(struct mapped_device *md, int with_lockfs);
163int dm_resume(struct mapped_device *md);
164
165/*
166 * Event functions.
167 */
168uint32_t dm_get_event_nr(struct mapped_device *md);
169int dm_wait_event(struct mapped_device *md, int event_nr);
170
171/*
172 * Info functions.
173 */
174struct gendisk *dm_disk(struct mapped_device *md);
175int dm_suspended(struct mapped_device *md);
176
177/*
178 * Geometry functions.
179 */
180int dm_get_geometry(struct mapped_device *md, struct hd_geometry *geo);
181int dm_set_geometry(struct mapped_device *md, struct hd_geometry *geo);
182
183
184/*-----------------------------------------------------------------
185 * Functions for manipulating device-mapper tables.
186 *---------------------------------------------------------------*/
187
188/*
189 * First create an empty table.
190 */
191int dm_table_create(struct dm_table **result, int mode,
192 unsigned num_targets, struct mapped_device *md);
193
194/*
195 * Then call this once for each target.
196 */
197int dm_table_add_target(struct dm_table *t, const char *type,
198 sector_t start, sector_t len, char *params);
199
200/*
201 * Finally call this to make the table ready for use.
202 */
203int dm_table_complete(struct dm_table *t);
204
205/*
206 * Table reference counting.
207 */
208struct dm_table *dm_get_table(struct mapped_device *md);
209void dm_table_get(struct dm_table *t);
210void dm_table_put(struct dm_table *t);
211
212/*
213 * Queries
214 */
215sector_t dm_table_get_size(struct dm_table *t);
216unsigned int dm_table_get_num_targets(struct dm_table *t);
217int dm_table_get_mode(struct dm_table *t);
218struct mapped_device *dm_table_get_md(struct dm_table *t);
219
220/*
221 * Trigger an event.
222 */
223void dm_table_event(struct dm_table *t);
224
225/*
226 * The device must be suspended before calling this method.
227 */
228int dm_swap_table(struct mapped_device *md, struct dm_table *t);
229
230#endif /* __KERNEL__ */
231#endif /* _LINUX_DEVICE_MAPPER_H */