diff options
author | Eric Biggers <ebiggers@google.com> | 2021-11-24 19:53:50 -0800 |
---|---|---|
committer | Eric Biggers <ebiggers@google.com> | 2022-01-24 14:16:01 -0800 |
commit | 4a241d560278ece4acb6976c02fdeb48bb398d36 (patch) | |
tree | 235c309181153d040f9a3aafd2daad76bc1efff1 | |
parent | acd90970f3c4c1ce41f1108d6f74a00c6eacb872 (diff) | |
download | linux-old/blk-crypto-sysfs-testing.tar.gz |
virtio-blk: add fake crypto profile for testingold/blk-crypto-sysfs-testing
Signed-off-by: Eric Biggers <ebiggers@google.com>
-rw-r--r-- | drivers/block/virtio_blk.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c index c443cd64fc9b46..3c8e245dda7b7e 100644 --- a/drivers/block/virtio_blk.c +++ b/drivers/block/virtio_blk.c @@ -16,6 +16,7 @@ #include <linux/blk-mq-virtio.h> #include <linux/numa.h> #include <uapi/linux/virtio_ring.h> +#include <linux/blk-crypto-profile.h> #define PART_BITS 4 #define VQ_NAME_LEN 16 @@ -748,6 +749,27 @@ static const struct blk_mq_ops virtio_mq_ops = { static unsigned int virtblk_queue_depth; module_param_named(queue_depth, virtblk_queue_depth, uint, 0444); +static void virtblk_add_crypto_profile(struct request_queue *q) +{ +#ifdef CONFIG_BLK_INLINE_ENCRYPTION + struct blk_crypto_profile *profile; + + profile = kzalloc(sizeof(*profile), GFP_KERNEL); + if (!profile) + return; + + if (blk_crypto_profile_init(profile, 32) != 0) { + kfree(profile); + return; + } + profile->modes_supported[BLK_ENCRYPTION_MODE_AES_256_XTS] = + 4096 | 8192; + profile->max_dun_bytes_supported = 8; + + q->crypto_profile = profile; +#endif /* CONFIG_BLK_INLINE_ENCRYPTION */ +} + static int virtblk_probe(struct virtio_device *vdev) { struct virtio_blk *vblk; @@ -836,6 +858,8 @@ static int virtblk_probe(struct virtio_device *vdev) } q = vblk->disk->queue; + virtblk_add_crypto_profile(q); + virtblk_name_format("vd", index, vblk->disk->disk_name, DISK_NAME_LEN); vblk->disk->major = major; |