diff --git a/doc/jsonrpc.md b/doc/jsonrpc.md index 30356bc8a..a5fc8652d 100644 --- a/doc/jsonrpc.md +++ b/doc/jsonrpc.md @@ -1445,7 +1445,7 @@ Example response: ## bdev_nvme_set_options {#rpc_bdev_nvme_set_options} -Set global parameters for all bdev NVMe. This RPC may only be called before SPDK subsystems have been initialized. +Set global parameters for all bdev NVMe. This RPC may only be called before SPDK subsystems have been initialized or any bdev NVMe has been created. ### Parameters diff --git a/module/bdev/nvme/bdev_nvme.c b/module/bdev/nvme/bdev_nvme.c index 026b78c2a..104857a9d 100644 --- a/module/bdev/nvme/bdev_nvme.c +++ b/module/bdev/nvme/bdev_nvme.c @@ -1351,7 +1351,9 @@ int spdk_bdev_nvme_set_opts(const struct spdk_bdev_nvme_opts *opts) { if (g_bdev_nvme_init_thread != NULL) { - return -EPERM; + if (!TAILQ_EMPTY(&g_nvme_bdev_ctrlrs)) { + return -EPERM; + } } g_opts = *opts; diff --git a/module/bdev/nvme/bdev_nvme_rpc.c b/module/bdev/nvme/bdev_nvme_rpc.c index cc1236491..c705a9efd 100644 --- a/module/bdev/nvme/bdev_nvme_rpc.c +++ b/module/bdev/nvme/bdev_nvme_rpc.c @@ -115,7 +115,8 @@ spdk_rpc_bdev_nvme_set_options(struct spdk_jsonrpc_request *request, return; } -SPDK_RPC_REGISTER("bdev_nvme_set_options", spdk_rpc_bdev_nvme_set_options, SPDK_RPC_STARTUP) +SPDK_RPC_REGISTER("bdev_nvme_set_options", spdk_rpc_bdev_nvme_set_options, + SPDK_RPC_STARTUP | SPDK_RPC_RUNTIME) SPDK_RPC_REGISTER_ALIAS_DEPRECATED(bdev_nvme_set_options, set_bdev_nvme_options) struct rpc_bdev_nvme_hotplug {