Merge tag 'acpi-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael...
[linux-block.git] / drivers / md / dm-verity.h
index f3f6070084196825f21dcc17947f67974a90cbde..20b1bcf034742305976f1763da08e6f4964be75e 100644 (file)
@@ -11,6 +11,7 @@
 #ifndef DM_VERITY_H
 #define DM_VERITY_H
 
+#include <linux/dm-io.h>
 #include <linux/dm-bufio.h>
 #include <linux/device-mapper.h>
 #include <linux/interrupt.h>
@@ -53,7 +54,7 @@ struct dm_verity {
        unsigned char levels;   /* the number of tree levels */
        unsigned char version;
        bool hash_failed:1;     /* set if hash of any block failed */
-       bool use_tasklet:1;     /* try to verify in tasklet before work-queue */
+       bool use_bh_wq:1;       /* try to verify in BH wq before normal work-queue */
        unsigned int digest_size;       /* digest size for the current hash algorithm */
        unsigned int ahash_reqsize;/* the size of temporary space for crypto */
        enum verity_mode mode;  /* mode for handling verification errors */
@@ -68,6 +69,9 @@ struct dm_verity {
        unsigned long *validated_blocks; /* bitset blocks validated */
 
        char *signature_key_desc; /* signature keyring reference */
+
+       struct dm_io_client *io;
+       mempool_t recheck_pool;
 };
 
 struct dm_verity_io {
@@ -76,13 +80,16 @@ struct dm_verity_io {
        /* original value of bio->bi_end_io */
        bio_end_io_t *orig_bi_end_io;
 
+       struct bvec_iter iter;
+
        sector_t block;
        unsigned int n_blocks;
-       bool in_tasklet;
-
-       struct bvec_iter iter;
+       bool in_bh;
 
        struct work_struct work;
+       struct work_struct bh_work;
+
+       char *recheck_buffer;
 
        /*
         * Three variably-size fields follow this struct: