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>
diff --git a/drivers/md/dm-exception-store.h b/drivers/md/dm-exception-store.h
index aed1f11..3137715 100644
--- a/drivers/md/dm-exception-store.h
+++ b/drivers/md/dm-exception-store.h
@@ -39,6 +39,9 @@
*/
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 @@
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 @@
# 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 @@
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 */