summaryrefslogtreecommitdiffstats
path: root/drivers/md/dm-exception-store.h
diff options
context:
space:
mode:
authorJonathan Brassow <jbrassow@redhat.com>2009-04-02 19:55:31 +0100
committerAlasdair G Kergon <agk@redhat.com>2009-04-02 19:55:31 +0100
commit493df71c6420b211a68ae82b889c1e8a5fe701be (patch)
tree2738295190c1b3c5f72d85059aae3c96f162afa6 /drivers/md/dm-exception-store.h
parent7513c2a761d69d2a93f17146b3563527d3618ba0 (diff)
downloadlinux-493df71c6420b211a68ae82b889c1e8a5fe701be.tar.gz
linux-493df71c6420b211a68ae82b889c1e8a5fe701be.tar.bz2
linux-493df71c6420b211a68ae82b889c1e8a5fe701be.zip
dm exception store: introduce registry
Move exception stores into a registry. Signed-off-by: Jonathan Brassow <jbrassow@redhat.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Diffstat (limited to 'drivers/md/dm-exception-store.h')
-rw-r--r--drivers/md/dm-exception-store.h19
1 files changed, 14 insertions, 5 deletions
diff --git a/drivers/md/dm-exception-store.h b/drivers/md/dm-exception-store.h
index aed1f1172f9e..31377150080e 100644
--- a/drivers/md/dm-exception-store.h
+++ b/drivers/md/dm-exception-store.h
@@ -39,6 +39,9 @@ struct dm_snap_exception {
*/
struct dm_exception_store;
struct dm_exception_store_type {
+ const char *name;
+ struct module *module;
+
int (*ctr) (struct dm_exception_store *store,
unsigned argc, char **argv);
@@ -85,10 +88,13 @@ struct dm_exception_store_type {
void (*fraction_full) (struct dm_exception_store *store,
sector_t *numerator,
sector_t *denominator);
+
+ /* For internal device-mapper use only. */
+ struct list_head list;
};
struct dm_exception_store {
- struct dm_exception_store_type type;
+ struct dm_exception_store_type *type;
struct dm_snapshot *snap;
@@ -138,6 +144,13 @@ static inline void dm_consecutive_chunk_count_inc(struct dm_snap_exception *e)
# endif
+int dm_exception_store_type_register(struct dm_exception_store_type *type);
+int dm_exception_store_type_unregister(struct dm_exception_store_type *type);
+
+int dm_exception_store_create(const char *type_name,
+ struct dm_exception_store **store);
+void dm_exception_store_destroy(struct dm_exception_store *store);
+
int dm_exception_store_init(void);
void dm_exception_store_exit(void);
@@ -150,8 +163,4 @@ void dm_persistent_snapshot_exit(void);
int dm_transient_snapshot_init(void);
void dm_transient_snapshot_exit(void);
-int dm_create_persistent(struct dm_exception_store *store);
-
-int dm_create_transient(struct dm_exception_store *store);
-
#endif /* _LINUX_DM_EXCEPTION_STORE */