Commit 54e1a03b authored by Krzysztof Goreczny's avatar Krzysztof Goreczny Committed by Jim Harris
Browse files

nvmf: fail early when interrupt mode is not supported



If interrupt mode is enabled but nvmf transport lacks support for it
then it's better to fail early than proceed and either have busy poller
consuming CPU or broken transport that don't serve requests at all.

Change-Id: I27334279adde9f550faccd14413c5686c154591e
Signed-off-by: default avatarKrzysztof Goreczny <krzysztof.goreczny@dell.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/23633


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarBoris Glimcher <Boris.Glimcher@emc.com>
Reviewed-by: default avatarJohn Levon <levon@movementarian.org>
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
parent dde60dba
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -2085,6 +2085,11 @@ nvmf_fc_poll_group_create(struct spdk_nvmf_transport *transport,
	struct spdk_nvmf_fc_transport *ftransport =
		SPDK_CONTAINEROF(transport, struct spdk_nvmf_fc_transport, transport);

	if (spdk_interrupt_mode_is_enabled()) {
		SPDK_ERRLOG("FC transport does not support interrupt mode\n");
		return NULL;
	}

	fgroup = calloc(1, sizeof(struct spdk_nvmf_fc_poll_group));
	if (!fgroup) {
		SPDK_ERRLOG("Unable to alloc FC poll group\n");
+5 −0
Original line number Diff line number Diff line
@@ -4080,6 +4080,11 @@ nvmf_rdma_poll_group_create(struct spdk_nvmf_transport *transport,
	struct spdk_nvmf_rdma_device		*device;
	int					rc;

	if (spdk_interrupt_mode_is_enabled()) {
		SPDK_ERRLOG("RDMA transport does not support interrupt mode\n");
		return NULL;
	}

	rtransport = SPDK_CONTAINEROF(transport, struct spdk_nvmf_rdma_transport, transport);

	rgroup = calloc(1, sizeof(*rgroup));
+5 −0
Original line number Diff line number Diff line
@@ -1477,6 +1477,11 @@ nvmf_tcp_poll_group_create(struct spdk_nvmf_transport *transport,
	struct spdk_nvmf_tcp_transport	*ttransport;
	struct spdk_nvmf_tcp_poll_group *tgroup;

	if (spdk_interrupt_mode_is_enabled()) {
		SPDK_ERRLOG("TCP transport does not support interrupt mode\n");
		return NULL;
	}

	tgroup = calloc(1, sizeof(*tgroup));
	if (!tgroup) {
		return NULL;