bdev/nvme: modify discovery_poller timer period
Attempt to start a connection once per second, but after a connection is successfully started, change the timer period to one millisecond instead. This ensures lower response time to AER events when the discovery controller is operational, but then decreasing rate of unsuccessful connect attempts (and associated log messages) if/when a discovery controller fails. Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: Ie24036303f5b00f4a42b6575656f401ea4d578f2 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11774 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Community-CI: Mellanox Build Bot Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
This commit is contained in:
parent
9f860c310f
commit
9ff419a90e
@ -4668,7 +4668,10 @@ discovery_poller(void *arg)
|
||||
TAILQ_REMOVE(&ctx->discovery_entry_ctxs, ctx->entry_ctx_in_use, tailq);
|
||||
trid = &ctx->entry_ctx_in_use->trid;
|
||||
ctx->probe_ctx = spdk_nvme_connect_async(trid, &ctx->drv_opts, discovery_attach_cb);
|
||||
if (!ctx->probe_ctx) {
|
||||
if (ctx->probe_ctx) {
|
||||
spdk_poller_unregister(&ctx->poller);
|
||||
ctx->poller = SPDK_POLLER_REGISTER(discovery_poller, ctx, 1000);
|
||||
} else {
|
||||
DISCOVERY_ERRLOG(ctx, "could not start discovery connect\n");
|
||||
TAILQ_INSERT_TAIL(&ctx->discovery_entry_ctxs, ctx->entry_ctx_in_use, tailq);
|
||||
ctx->entry_ctx_in_use = NULL;
|
||||
@ -4685,6 +4688,8 @@ discovery_poller(void *arg)
|
||||
} else {
|
||||
rc = spdk_nvme_ctrlr_process_admin_completions(ctx->ctrlr);
|
||||
if (rc < 0) {
|
||||
spdk_poller_unregister(&ctx->poller);
|
||||
ctx->poller = SPDK_POLLER_REGISTER(discovery_poller, ctx, 1000 * 1000);
|
||||
TAILQ_INSERT_TAIL(&ctx->discovery_entry_ctxs, ctx->entry_ctx_in_use, tailq);
|
||||
ctx->entry_ctx_in_use = NULL;
|
||||
|
||||
@ -4705,7 +4710,7 @@ start_discovery_poller(void *arg)
|
||||
struct discovery_ctx *ctx = arg;
|
||||
|
||||
TAILQ_INSERT_TAIL(&g_discovery_ctxs, ctx, tailq);
|
||||
ctx->poller = SPDK_POLLER_REGISTER(discovery_poller, ctx, 1000);
|
||||
ctx->poller = SPDK_POLLER_REGISTER(discovery_poller, ctx, 1000 * 1000);
|
||||
}
|
||||
|
||||
int
|
||||
|
Loading…
Reference in New Issue
Block a user