[PATCH rdma-next 12/13] nvme: Add crypto profile at nvme controller
Leon Romanovsky
leon at kernel.org
Tue Jan 17 03:59:05 PST 2023
On Tue, Jan 17, 2023 at 12:31:22AM +0000, Chaitanya Kulkarni wrote:
> > diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
> > index 51a9880db6ce..f09e4e0216b3 100644
> > --- a/drivers/nvme/host/core.c
> > +++ b/drivers/nvme/host/core.c
> > @@ -1928,6 +1928,9 @@ static void nvme_update_disk_info(struct gendisk *disk,
> > capacity = 0;
> > }
> >
> > + if (ctrl->crypto_enable)
> > + blk_crypto_register(&ctrl->crypto_profile, disk->queue);
> > +
> > set_capacity_and_notify(disk, capacity);
> >
> > nvme_config_discard(disk, ns);
> > diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h
> > index 424c8a467a0c..591380f53744 100644
> > --- a/drivers/nvme/host/nvme.h
> > +++ b/drivers/nvme/host/nvme.h
> > @@ -16,6 +16,7 @@
> > #include <linux/rcupdate.h>
> > #include <linux/wait.h>
> > #include <linux/t10-pi.h>
> > +#include <linux/blk-crypto-profile.h>
> >
> > #include <trace/events/block.h>
> >
> > @@ -374,6 +375,9 @@ struct nvme_ctrl {
> >
> > enum nvme_ctrl_type cntrltype;
> > enum nvme_dctype dctype;
> > +
> > + bool crypto_enable;
>
> why not decalre crypto_profile a pointer, allocate that at init
> controller and NULL check against that pointer instead of using
> an extra variable crypto_enable ?
The embedded struct allows us to rely on container_of() macro.
377 static int nvme_rdma_crypto_keyslot_program(struct blk_crypto_profile *profile,
378 const struct blk_crypto_key *key,
379 unsigned int slot)
380 {
381 struct nvme_ctrl *nctrl =
382 container_of(profile, struct nvme_ctrl, crypto_profile);
>
> e.g. :-
>
> if (ctrl->crypto_profile)
> blk_crypto_register(ctrl->crypto_profile, disk->queue);
>
> > + struct blk_crypto_profile crypto_profile;
>
> you are increasing the size of struct nvme_ctrl unconditionally,
> why not guard above with CONFIG_BLK_INLINE_ENCRYPTION ?
We can do it.
Thanks
>
> -ck
>
More information about the Linux-nvme
mailing list