2018-05-28 12:31:37

by Ladvine D Almeida

[permalink] [raw]
Subject: [PATCH 1/7] block: Add block level changes for inline encryption


This patch introduces new variable under bio structure to
facilitate inline encryption. This variable is used to
associate I/O requests to crypto information.

Signed-off-by: Ladvine D Almeida <[email protected]>
---
block/Kconfig | 13 +++++++++++++
block/bio.c | 6 ++++++
include/linux/blk_types.h | 3 +++
3 files changed, 22 insertions(+)

diff --git a/block/Kconfig b/block/Kconfig
index 28ec557..a48ecec 100644
--- a/block/Kconfig
+++ b/block/Kconfig
@@ -128,6 +128,19 @@ config BLK_DEV_THROTTLING_LOW

Note, this is an experimental interface and could be changed someday.

+config BLK_DEV_INLINE_ENCRYPTION
+ bool "Enable support for block device inline encryption"
+ default n
+ help
+ Enable block devices for Inline Encryption support.
+
+ This option is required to support the inline encryption capability
+ of the block device driver, including UFS Host Controller driver.
+ When the Inline Encryption feature is enabled in the block device
+ drivers, this option will be automatically enabled.
+
+ If unsure, say N.
+
config BLK_CMDLINE_PARSER
bool "Block device command line partition parser"
default n
diff --git a/block/bio.c b/block/bio.c
index 0a4df92..91aecf5 100644
--- a/block/bio.c
+++ b/block/bio.c
@@ -606,6 +606,9 @@ void __bio_clone_fast(struct bio *bio, struct bio *bio_src)
bio->bi_write_hint = bio_src->bi_write_hint;
bio->bi_iter = bio_src->bi_iter;
bio->bi_io_vec = bio_src->bi_io_vec;
+#ifdef CONFIG_BLK_DEV_INLINE_ENCRYPTION
+ bio->bi_ie_private = bio_src->bi_ie_private;
+#endif

bio_clone_blkcg_association(bio, bio_src);
}
@@ -690,6 +693,9 @@ struct bio *bio_clone_bioset(struct bio *bio_src, gfp_t gfp_mask,
bio->bi_write_hint = bio_src->bi_write_hint;
bio->bi_iter.bi_sector = bio_src->bi_iter.bi_sector;
bio->bi_iter.bi_size = bio_src->bi_iter.bi_size;
+#ifdef CONFIG_BLK_DEV_INLINE_ENCRYPTION
+ bio->bi_ie_private = bio_src->bi_ie_private;
+#endif

switch (bio_op(bio)) {
case REQ_OP_DISCARD:
diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h
index 4cb970c..11df096 100644
--- a/include/linux/blk_types.h
+++ b/include/linux/blk_types.h
@@ -183,6 +183,9 @@ struct bio {
void *bi_cg_private;
struct bio_issue bi_issue;
#endif
+#ifdef CONFIG_BLK_DEV_INLINE_ENCRYPTION
+ void *bi_ie_private;
+#endif
#endif
union {
#if defined(CONFIG_BLK_DEV_INTEGRITY)
--
2.7.4



2018-05-28 12:41:05

by Ladvine D Almeida

[permalink] [raw]
Subject: Re: [PATCH 1/7] block: Add block level changes for inline encryption

The subject line is incorrect for the patch.
Please discard it, I will resend with corrected subject line.


On Monday 28 May 2018 01:30 PM, Ladvine D Almeida wrote:
>
> This patch introduces new variable under bio structure to
> facilitate inline encryption. This variable is used to
> associate I/O requests to crypto information.
>
> Signed-off-by: Ladvine D Almeida <[email protected]>
> ---
> block/Kconfig | 13 +++++++++++++
> block/bio.c | 6 ++++++
> include/linux/blk_types.h | 3 +++
> 3 files changed, 22 insertions(+)
>
> diff --git a/block/Kconfig b/block/Kconfig
> index 28ec557..a48ecec 100644
> --- a/block/Kconfig
> +++ b/block/Kconfig
> @@ -128,6 +128,19 @@ config BLK_DEV_THROTTLING_LOW
>
> Note, this is an experimental interface and could be changed someday.
>
> +config BLK_DEV_INLINE_ENCRYPTION
> + bool "Enable support for block device inline encryption"
> + default n
> + help
> + Enable block devices for Inline Encryption support.
> +
> + This option is required to support the inline encryption capability
> + of the block device driver, including UFS Host Controller driver.
> + When the Inline Encryption feature is enabled in the block device
> + drivers, this option will be automatically enabled.
> +
> + If unsure, say N.
> +
> config BLK_CMDLINE_PARSER
> bool "Block device command line partition parser"
> default n
> diff --git a/block/bio.c b/block/bio.c
> index 0a4df92..91aecf5 100644
> --- a/block/bio.c
> +++ b/block/bio.c
> @@ -606,6 +606,9 @@ void __bio_clone_fast(struct bio *bio, struct bio *bio_src)
> bio->bi_write_hint = bio_src->bi_write_hint;
> bio->bi_iter = bio_src->bi_iter;
> bio->bi_io_vec = bio_src->bi_io_vec;
> +#ifdef CONFIG_BLK_DEV_INLINE_ENCRYPTION
> + bio->bi_ie_private = bio_src->bi_ie_private;
> +#endif
>
> bio_clone_blkcg_association(bio, bio_src);
> }
> @@ -690,6 +693,9 @@ struct bio *bio_clone_bioset(struct bio *bio_src, gfp_t gfp_mask,
> bio->bi_write_hint = bio_src->bi_write_hint;
> bio->bi_iter.bi_sector = bio_src->bi_iter.bi_sector;
> bio->bi_iter.bi_size = bio_src->bi_iter.bi_size;
> +#ifdef CONFIG_BLK_DEV_INLINE_ENCRYPTION
> + bio->bi_ie_private = bio_src->bi_ie_private;
> +#endif
>
> switch (bio_op(bio)) {
> case REQ_OP_DISCARD:
> diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h
> index 4cb970c..11df096 100644
> --- a/include/linux/blk_types.h
> +++ b/include/linux/blk_types.h
> @@ -183,6 +183,9 @@ struct bio {
> void *bi_cg_private;
> struct bio_issue bi_issue;
> #endif
> +#ifdef CONFIG_BLK_DEV_INLINE_ENCRYPTION
> + void *bi_ie_private;
> +#endif
> #endif
> union {
> #if defined(CONFIG_BLK_DEV_INTEGRITY)
>

Best Regards,
Ladvine