Commit 11aca204 authored by Tomasz Kulasek's avatar Tomasz Kulasek Committed by Tomasz Zawadzki
Browse files

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: default avatarTomasz Kulasek <tomaszx.kulasek@intel.com>
Signed-off-by: default avatarTomasz 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: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
parent 482ca8eb
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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;

/**
 * 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 spdk_nvme_transport;
+24 −0
Original line number Diff line number Diff line
@@ -985,6 +985,24 @@ nvme_cuse_stop(struct spdk_nvme_ctrlr *ctrlr)
	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 = {
	.name = "cuse",
	.stop = nvme_cuse_stop,
@@ -1035,6 +1053,12 @@ spdk_nvme_cuse_unregister(struct spdk_nvme_ctrlr *ctrlr)
	return 0;
}

void
spdk_nvme_cuse_update_namespaces(struct spdk_nvme_ctrlr *ctrlr)
{
	nvme_cuse_update(ctrlr);
}

int
spdk_nvme_cuse_get_ctrlr_name(struct spdk_nvme_ctrlr *ctrlr, char *name, size_t *size)
{
+1 −0
Original line number Diff line number Diff line
@@ -144,6 +144,7 @@
	spdk_nvme_cuse_get_ns_name;
	spdk_nvme_cuse_register;
	spdk_nvme_cuse_unregister;
	spdk_nvme_cuse_update_namespaces;

	spdk_nvme_map_prps;