nvme/cuse: add spdk_nvme_cuse_update api

spdk_nvme_cuse_update_namespaces() API allows application
to repopulate namespaces on NVMe CUSE devices.

Change-Id: I5375b13bcc91b17cd26b4dc6f02d83dc33826542
Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/658
Community-CI: Broadcom CI
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
This commit is contained in:
Tomasz Kulasek 2020-02-07 14:31:12 +01:00 committed by Tomasz Zawadzki
parent 482ca8eb60
commit 11aca20442
3 changed files with 33 additions and 0 deletions

View File

@ -3083,6 +3083,14 @@ int spdk_nvme_map_prps(void *prv, struct spdk_nvme_cmd *cmd, struct iovec *iovs,
*/ */
struct spdk_nvme_transport_poll_group; struct spdk_nvme_transport_poll_group;
/**
* Update and populate namespace CUSE devices (Experimental)
*
* \param ctrlr Opaque handle to the NVMe controller.
*
*/
void spdk_nvme_cuse_update_namespaces(struct spdk_nvme_ctrlr *ctrlr);
struct nvme_request; struct nvme_request;
struct spdk_nvme_transport; struct spdk_nvme_transport;

View File

@ -985,6 +985,24 @@ nvme_cuse_stop(struct spdk_nvme_ctrlr *ctrlr)
pthread_mutex_unlock(&g_cuse_mtx); pthread_mutex_unlock(&g_cuse_mtx);
} }
static void
nvme_cuse_update(struct spdk_nvme_ctrlr *ctrlr)
{
struct cuse_device *ctrlr_device;
pthread_mutex_lock(&g_cuse_mtx);
ctrlr_device = nvme_cuse_get_cuse_ctrlr_device(ctrlr);
if (!ctrlr_device) {
pthread_mutex_unlock(&g_cuse_mtx);
return;
}
cuse_nvme_ctrlr_update_namespaces(ctrlr_device);
pthread_mutex_unlock(&g_cuse_mtx);
}
static struct nvme_io_msg_producer cuse_nvme_io_msg_producer = { static struct nvme_io_msg_producer cuse_nvme_io_msg_producer = {
.name = "cuse", .name = "cuse",
.stop = nvme_cuse_stop, .stop = nvme_cuse_stop,
@ -1035,6 +1053,12 @@ spdk_nvme_cuse_unregister(struct spdk_nvme_ctrlr *ctrlr)
return 0; return 0;
} }
void
spdk_nvme_cuse_update_namespaces(struct spdk_nvme_ctrlr *ctrlr)
{
nvme_cuse_update(ctrlr);
}
int int
spdk_nvme_cuse_get_ctrlr_name(struct spdk_nvme_ctrlr *ctrlr, char *name, size_t *size) spdk_nvme_cuse_get_ctrlr_name(struct spdk_nvme_ctrlr *ctrlr, char *name, size_t *size)
{ {

View File

@ -144,6 +144,7 @@
spdk_nvme_cuse_get_ns_name; spdk_nvme_cuse_get_ns_name;
spdk_nvme_cuse_register; spdk_nvme_cuse_register;
spdk_nvme_cuse_unregister; spdk_nvme_cuse_unregister;
spdk_nvme_cuse_update_namespaces;
spdk_nvme_map_prps; spdk_nvme_map_prps;