Skip to content

Commit 3d24db0

Browse files
committed
chore: opts create helper and base bdev helper
Signed-off-by: Diwakar Sharma <diwakar.sharma@datacore.com>
1 parent 50b064f commit 3d24db0

File tree

2 files changed

+65
-0
lines changed

2 files changed

+65
-0
lines changed

module/bdev/crypto/vbdev_crypto.c

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -600,6 +600,34 @@ vbdev_crypto_delete_name(struct bdev_names *name)
600600
free(name);
601601
}
602602

603+
/* For the named crypto vbdev and the named base bdev, create the crypto opts */
604+
struct vbdev_crypto_opts *
605+
create_crypto_opts_by_name(char *name, char *base_bdev_name, struct spdk_accel_crypto_key *key,
606+
bool key_owner)
607+
{
608+
struct vbdev_crypto_opts *opts = calloc(1, sizeof(*opts));
609+
610+
if (!opts) {
611+
return NULL;
612+
}
613+
614+
opts->bdev_name = strdup(base_bdev_name);
615+
if (!opts->bdev_name) {
616+
free_crypto_opts(opts);
617+
return NULL;
618+
}
619+
opts->vbdev_name = strdup(name);
620+
if (!opts->vbdev_name) {
621+
free_crypto_opts(opts);
622+
return NULL;
623+
}
624+
625+
opts->key = key;
626+
opts->key_owner = key_owner;
627+
628+
return opts;
629+
}
630+
603631
/* RPC entry point for crypto creation. */
604632
int
605633
create_crypto_disk(struct vbdev_crypto_opts *opts)
@@ -929,6 +957,21 @@ delete_crypto_disk(const char *bdev_name, spdk_delete_crypto_complete cb_fn,
929957
}
930958
}
931959

960+
/* Get the base bdev corresponding to the given vbdev name. */
961+
struct spdk_bdev *
962+
vbdev_crypto_disk_get_base_bdev(const char *vbdev_name)
963+
{
964+
struct vbdev_crypto *crypto_vbdev;
965+
966+
TAILQ_FOREACH(crypto_vbdev, &g_vbdev_crypto, link) {
967+
if (strcmp(crypto_vbdev->crypto_bdev.name, vbdev_name) == 0) {
968+
return crypto_vbdev->base_bdev;
969+
}
970+
}
971+
972+
return NULL;
973+
}
974+
932975
/* Because we specified this function in our crypto bdev function table when we
933976
* registered our crypto bdev, we'll get this call anytime a new bdev shows up.
934977
* Here we need to decide if we care about it and if so what to do. We

module/bdev/crypto/vbdev_crypto.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,33 @@ int create_crypto_disk(struct vbdev_crypto_opts *opts);
4747
void delete_crypto_disk(const char *bdev_name, spdk_delete_crypto_complete cb_fn,
4848
void *cb_arg);
4949

50+
/**
51+
* Create crypto opts for the given crypto vbdev name and base bdev name.
52+
*
53+
* \param name Name of crypto vbdev
54+
* \param base_bdev_name Name of base bdev for crypto vbdev
55+
* \param key crypto key for the vbdev
56+
* \param key_owner Is key created by application/RPC.
57+
* \return Handle to created vbdev_crypto_opts or NULL if failed ot create.
58+
*/
59+
struct vbdev_crypto_opts *
60+
create_crypto_opts_by_name(char *name, char *base_bdev_name, struct spdk_accel_crypto_key *key,
61+
bool key_owner);
62+
5063
/**
5164
* Release crypto opts created with create_crypto_opts()
5265
*
5366
* \param opts Crypto opts to release
5467
*/
5568
void free_crypto_opts(struct vbdev_crypto_opts *opts);
5669

70+
/**
71+
* Given a vbdev crypto name, get the handle for base bdev of the vbdev.
72+
*
73+
* \param vbdev_name Name of crypto vbdev.
74+
* \return Handle to base bdev or NULL if not found.
75+
*/
76+
struct spdk_bdev *
77+
vbdev_crypto_disk_get_base_bdev(const char *vbdev_name);
78+
5779
#endif /* SPDK_VBDEV_CRYPTO_H */

0 commit comments

Comments
 (0)