]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/md/dm-exception-store.h
Merge branch 'fix/asoc' into for-linus
[karo-tx-linux.git] / drivers / md / dm-exception-store.h
index 25677df8dd596b6948ccf45489bd02e67f4b94f6..bb9f33d5daa2169127d96fd9ebfcbe41d1cc819b 100644 (file)
@@ -11,6 +11,7 @@
 #define _LINUX_DM_EXCEPTION_STORE
 
 #include <linux/blkdev.h>
+#include <linux/device-mapper.h>
 
 /*
  * The snapshot code deals with largish chunks of the disk at a
@@ -37,7 +38,6 @@ struct dm_snap_exception {
  * COW device).
  */
 struct dm_exception_store {
-
        /*
         * Destroys this object when you've finished with it.
         */
@@ -45,9 +45,13 @@ struct dm_exception_store {
 
        /*
         * The target shouldn't read the COW device until this is
-        * called.
+        * called.  As exceptions are read from the COW, they are
+        * reported back via the callback.
         */
-       int (*read_metadata) (struct dm_exception_store *store);
+       int (*read_metadata) (struct dm_exception_store *store,
+                             int (*callback)(void *callback_context,
+                                             chunk_t old, chunk_t new),
+                             void *callback_context);
 
        /*
         * Find somewhere to store the next exception.
@@ -68,6 +72,9 @@ struct dm_exception_store {
         */
        void (*drop_snapshot) (struct dm_exception_store *store);
 
+       int (*status) (struct dm_exception_store *store, status_type_t status,
+                      char *result, unsigned int maxlen);
+
        /*
         * Return how full the snapshot is.
         */
@@ -122,9 +129,18 @@ static inline void dm_consecutive_chunk_count_inc(struct dm_snap_exception *e)
 
 #  endif
 
+int dm_exception_store_init(void);
+void dm_exception_store_exit(void);
+
 /*
  * Two exception store implementations.
  */
+int dm_persistent_snapshot_init(void);
+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);