Commit 547328f7 authored by Konrad Sztyber's avatar Konrad Sztyber
Browse files

accel: allow clearing previously assigned driver



It could be useful for some users to be able to clear the driver after
it was previously set (e.g. use a config w/ a driver set and then clear
it via an RPC).

Signed-off-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Change-Id: I172c468956243a6fa74f2e66a4124b50d50e5b13
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/24469


Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarMichal Berger <michal.berger@intel.com>
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Reviewed-by: default avatarMaciej Szulik <maciej.szulik@intel.com>
Community-CI: Mellanox Build Bot
parent 45f2e732
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -948,7 +948,8 @@ void spdk_accel_write_config_json(struct spdk_json_write_ctx *w);
/**
 * Select platform driver to execute operation chains.
 *
 * \param name Name of the driver.
 * \param name Name of the driver.  If NULL or empty string, this function will clear the driver
 * that was previously assigned.
 *
 * \return 0 on success, negetive errno otherwise.
 */
+7 −5
Original line number Diff line number Diff line
@@ -3329,13 +3329,15 @@ accel_find_driver(const char *name)
int
spdk_accel_set_driver(const char *name)
{
	struct spdk_accel_driver *driver;
	struct spdk_accel_driver *driver = NULL;

	if (name != NULL && name[0] != '\0') {
		driver = accel_find_driver(name);
		if (driver == NULL) {
			SPDK_ERRLOG("Couldn't find driver named '%s'\n", name);
			return -ENODEV;
		}
	}

	g_accel_driver = driver;

+2 −2
Original line number Diff line number Diff line
@@ -320,7 +320,7 @@ struct rpc_accel_set_driver {
};

static const struct spdk_json_object_decoder rpc_accel_set_driver_decoders[] = {
	{"name", offsetof(struct rpc_accel_set_driver, name), spdk_json_decode_string},
	{"name", offsetof(struct rpc_accel_set_driver, name), spdk_json_decode_string, true},
};

static void
@@ -348,7 +348,7 @@ rpc_accel_set_driver(struct spdk_jsonrpc_request *request, const struct spdk_jso
		goto cleanup;
	}

	SPDK_NOTICELOG("Using accel driver: %s\n", req.name);
	SPDK_NOTICELOG("Using accel driver: %s\n", req.name && req.name[0] ? req.name : "none");
	spdk_jsonrpc_send_bool_response(request, true);
cleanup:
	free_rpc_accel_set_driver(&req);