Commit 2d36f6f1 authored by Liu Xiaodong's avatar Liu Xiaodong Committed by Tomasz Zawadzki
Browse files

bdev_aio: add set interrupt mode to poller



Change-Id: I089241bbb42c047e8ae4f206f2dad72c4a69f1d9
Signed-off-by: default avatarLiu Xiaodong <xiaodong.liu@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5789


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
parent 924d4bf3
Loading
Loading
Loading
Loading
+15 −6
Original line number Diff line number Diff line
@@ -658,20 +658,31 @@ bdev_aio_unregister_interrupt(struct bdev_aio_group_channel *ch)
	ch->efd = -1;
}

static void
bdev_aio_poller_set_interrupt_mode(struct spdk_poller *poller, void *cb_arg, bool interrupt_mode)
{
	return;
}

static int
bdev_aio_group_create_cb(void *io_device, void *ctx_buf)
{
	struct bdev_aio_group_channel *ch = ctx_buf;
	int rc;

	TAILQ_INIT(&ch->io_ch_head);
	/* Initialize ch->efd to be invalid and unused. */
	ch->efd = -1;

	if (spdk_interrupt_mode_is_enabled()) {
		return bdev_aio_register_interrupt(ch);
		rc = bdev_aio_register_interrupt(ch);
		if (rc < 0) {
			SPDK_ERRLOG("Failed to prepare intr resource to bdev_aio\n");
			return rc;
		}
	}

	ch->poller = SPDK_POLLER_REGISTER(bdev_aio_group_poll, ch, 0);
	spdk_poller_register_interrupt(ch->poller, bdev_aio_poller_set_interrupt_mode, NULL);

	return 0;
}
@@ -685,12 +696,10 @@ bdev_aio_group_destroy_cb(void *io_device, void *ctx_buf)
		SPDK_ERRLOG("Group channel of bdev aio has uncleared io channel\n");
	}

	if (ch->intr) {
	spdk_poller_unregister(&ch->poller);
	if (spdk_interrupt_mode_is_enabled()) {
		bdev_aio_unregister_interrupt(ch);
		return;
	}

	spdk_poller_unregister(&ch->poller);
}

int