Commit a82909ec authored by Diwakar Sharma's avatar Diwakar Sharma Committed by Jim Harris
Browse files

crypto: add public helper function for crypto opts creation



The crypto opts currently is part of rpc only so applications
may have difficulty using via FFI. Exposing this function makes
easier for applications to create opts without having to manage
opts lifecycle.

Change-Id: I22517f628460f81516863f5a2a6ce916729f2c73
Signed-off-by: default avatarDiwakar Sharma <diwakar.sharma@datacore.com>
Reviewed-on: https://review.spdk.io/c/spdk/spdk/+/25652


Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
Reviewed-by: default avatarTom Nabarro <tom.nabarro@intel.com>
parent f6149e6f
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -600,6 +600,34 @@ vbdev_crypto_delete_name(struct bdev_names *name)
	free(name);
}

/* For the named crypto vbdev and the named base bdev, create the crypto opts */
struct vbdev_crypto_opts *
create_crypto_opts_by_name(char *name, char *base_bdev_name, struct spdk_accel_crypto_key *key,
			   bool key_owner)
{
	struct vbdev_crypto_opts *opts = calloc(1, sizeof(*opts));

	if (!opts) {
		return NULL;
	}

	opts->bdev_name = strdup(base_bdev_name);
	if (!opts->bdev_name) {
		free_crypto_opts(opts);
		return NULL;
	}
	opts->vbdev_name = strdup(name);
	if (!opts->vbdev_name) {
		free_crypto_opts(opts);
		return NULL;
	}

	opts->key = key;
	opts->key_owner = key_owner;

	return opts;
}

/* RPC entry point for crypto creation. */
int
create_crypto_disk(struct vbdev_crypto_opts *opts)
+13 −0
Original line number Diff line number Diff line
@@ -47,6 +47,19 @@ int create_crypto_disk(struct vbdev_crypto_opts *opts);
void delete_crypto_disk(const char *bdev_name, spdk_delete_crypto_complete cb_fn,
			void *cb_arg);

/**
 * Create crypto opts for the given crypto vbdev name and base bdev name.
 *
 * \param name Name of crypto vbdev.
 * \param base_bdev_name Name of base bdev for crypto vbdev.
 * \param key crypto key for the vbdev.
 * \param key_owner Is key created by application/RPC.
 * \return Handle to created vbdev_crypto_opts or NULL if failed to create.
 */
struct vbdev_crypto_opts *
create_crypto_opts_by_name(char *name, char *base_bdev_name, struct spdk_accel_crypto_key *key,
			   bool key_owner);

/**
 * Release crypto opts created with create_crypto_opts()
 *