diff options
Diffstat (limited to 'drivers/md/dm-verity.h')
-rw-r--r-- | drivers/md/dm-verity.h | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/md/dm-verity.h b/drivers/md/dm-verity.h index f3f607008419..20b1bcf03474 100644 --- a/drivers/md/dm-verity.h +++ b/drivers/md/dm-verity.h @@ -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: |