bdev/nvme: add DISCOVERY_DEBUGLOG/ERRLOG

These macros are used to prefix the following to
any discovery-related DEBUGLOG or ERRLOG:

Discovery[127.0.0.1:8009]

Inside the brackets are the traddr and trsvcid of
the discovery service associated with that message.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: Ib1991a13f550bb8c9aaf1194a56b218cbd71c96c
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11733
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
This commit is contained in:
Jim Harris 2022-02-24 15:20:20 +00:00 committed by Tomasz Zawadzki
parent 9614dca9f9
commit bcb75753dc

View File

@ -4121,6 +4121,12 @@ bdev_nvme_delete(const char *name, const struct nvme_path_id *path_id)
return rc; return rc;
} }
#define DISCOVERY_DEBUGLOG(ctx, format, ...) \
SPDK_DEBUGLOG(bdev_nvme, "Discovery[%s:%s] " format, ctx->trid.traddr, ctx->trid.trsvcid, ##__VA_ARGS__);
#define DISCOVERY_ERRLOG(ctx, format, ...) \
SPDK_ERRLOG("Discovery[%s:%s] " format, ctx->trid.traddr, ctx->trid.trsvcid, ##__VA_ARGS__);
struct discovery_entry_ctx { struct discovery_entry_ctx {
char name[128]; char name[128];
struct spdk_nvme_transport_id trid; struct spdk_nvme_transport_id trid;
@ -4229,7 +4235,7 @@ discovery_attach_controller_done(void *cb_ctx, size_t bdev_count, int rc)
struct discovery_entry_ctx *entry_ctx = cb_ctx; struct discovery_entry_ctx *entry_ctx = cb_ctx;
struct discovery_ctx *ctx = entry_ctx->ctx;; struct discovery_ctx *ctx = entry_ctx->ctx;;
SPDK_DEBUGLOG(bdev_nvme, "attach %s done\n", entry_ctx->name); DISCOVERY_DEBUGLOG(ctx, "attach %s done\n", entry_ctx->name);
ctx->attach_in_progress--; ctx->attach_in_progress--;
if (ctx->attach_in_progress == 0) { if (ctx->attach_in_progress == 0) {
discovery_complete(ctx); discovery_complete(ctx);
@ -4247,7 +4253,7 @@ discovery_log_page_cb(void *cb_arg, int rc, const struct spdk_nvme_cpl *cpl,
bool found; bool found;
if (rc || spdk_nvme_cpl_is_error(cpl)) { if (rc || spdk_nvme_cpl_is_error(cpl)) {
SPDK_ERRLOG("could not get discovery log page\n"); DISCOVERY_ERRLOG(ctx, "could not get discovery log page\n");
return; return;
} }
@ -4266,7 +4272,7 @@ discovery_log_page_cb(void *cb_arg, int rc, const struct spdk_nvme_cpl *cpl,
if (!found) { if (!found) {
struct nvme_path_id path = {}; struct nvme_path_id path = {};
SPDK_DEBUGLOG(bdev_nvme, "detach controller\n"); DISCOVERY_DEBUGLOG(ctx, "detach controller\n");
path.trid = entry_ctx->trid; path.trid = entry_ctx->trid;
bdev_nvme_delete(entry_ctx->name, &path); bdev_nvme_delete(entry_ctx->name, &path);
@ -4286,7 +4292,7 @@ discovery_log_page_cb(void *cb_arg, int rc, const struct spdk_nvme_cpl *cpl,
new_ctx = calloc(1, sizeof(*new_ctx)); new_ctx = calloc(1, sizeof(*new_ctx));
if (new_ctx == NULL) { if (new_ctx == NULL) {
SPDK_ERRLOG("could not allocate new entry_ctx\n"); DISCOVERY_ERRLOG(ctx, "could not allocate new entry_ctx\n");
break; break;
} }
@ -4317,7 +4323,7 @@ discovery_log_page_cb(void *cb_arg, int rc, const struct spdk_nvme_cpl *cpl,
new_ctx = calloc(1, sizeof(*new_ctx)); new_ctx = calloc(1, sizeof(*new_ctx));
if (new_ctx == NULL) { if (new_ctx == NULL) {
SPDK_ERRLOG("could not allocate new entry_ctx\n"); DISCOVERY_ERRLOG(ctx, "could not allocate new entry_ctx\n");
break; break;
} }
@ -4338,7 +4344,7 @@ discovery_log_page_cb(void *cb_arg, int rc, const struct spdk_nvme_cpl *cpl,
TAILQ_INSERT_TAIL(&ctx->nvm_entry_ctxs, new_ctx, tailq); TAILQ_INSERT_TAIL(&ctx->nvm_entry_ctxs, new_ctx, tailq);
ctx->attach_in_progress++; ctx->attach_in_progress++;
} else { } else {
SPDK_ERRLOG("bdev_nvme_create failed (%s)\n", spdk_strerror(-rc)); DISCOVERY_ERRLOG(ctx, "bdev_nvme_create failed (%s)\n", spdk_strerror(-rc));
} }
} }
} }
@ -4358,9 +4364,9 @@ get_discovery_log_page(struct discovery_ctx *ctx)
ctx->in_progress = true; ctx->in_progress = true;
rc = spdk_nvme_ctrlr_get_discovery_log_page(ctx->ctrlr, discovery_log_page_cb, ctx); rc = spdk_nvme_ctrlr_get_discovery_log_page(ctx->ctrlr, discovery_log_page_cb, ctx);
if (rc != 0) { if (rc != 0) {
SPDK_ERRLOG("could not get discovery log page\n"); DISCOVERY_ERRLOG(ctx, "could not get discovery log page\n");
} }
SPDK_DEBUGLOG(bdev_nvme, "sent discovery log page command\n"); DISCOVERY_DEBUGLOG(ctx, "sent discovery log page command\n");
} }
static void static void
@ -4370,16 +4376,16 @@ discovery_aer_cb(void *arg, const struct spdk_nvme_cpl *cpl)
uint32_t log_page_id = (cpl->cdw0 & 0xFF0000) >> 16; uint32_t log_page_id = (cpl->cdw0 & 0xFF0000) >> 16;
if (spdk_nvme_cpl_is_error(cpl)) { if (spdk_nvme_cpl_is_error(cpl)) {
SPDK_ERRLOG("aer failed\n"); DISCOVERY_ERRLOG(ctx, "aer failed\n");
return; return;
} }
if (log_page_id != SPDK_NVME_LOG_DISCOVERY) { if (log_page_id != SPDK_NVME_LOG_DISCOVERY) {
SPDK_ERRLOG("unexpected log page 0x%x\n", log_page_id); DISCOVERY_ERRLOG(ctx, "unexpected log page 0x%x\n", log_page_id);
return; return;
} }
SPDK_DEBUGLOG(bdev_nvme, "got aer\n"); DISCOVERY_DEBUGLOG(ctx, "got aer\n");
if (ctx->in_progress) { if (ctx->in_progress) {
ctx->pending = true; ctx->pending = true;
return; return;
@ -4393,10 +4399,10 @@ start_discovery_done(void *cb_ctx)
{ {
struct discovery_ctx *ctx = cb_ctx; struct discovery_ctx *ctx = cb_ctx;
SPDK_DEBUGLOG(bdev_nvme, "start discovery done\n"); DISCOVERY_DEBUGLOG(ctx, "start discovery done\n");
ctx->start_cb_fn(ctx->cb_ctx, ctx->rc); ctx->start_cb_fn(ctx->cb_ctx, ctx->rc);
if (ctx->rc != 0) { if (ctx->rc != 0) {
SPDK_ERRLOG("could not connect to discovery ctrlr\n"); DISCOVERY_ERRLOG(ctx, "could not connect to discovery ctrlr\n");
TAILQ_REMOVE(&g_discovery_ctxs, ctx, tailq); TAILQ_REMOVE(&g_discovery_ctxs, ctx, tailq);
free_discovery_ctx(ctx); free_discovery_ctx(ctx);
} }
@ -4411,7 +4417,7 @@ discovery_attach_cb(void *cb_ctx, const struct spdk_nvme_transport_id *trid,
ctx = SPDK_CONTAINEROF(user_opts, struct discovery_ctx, opts); ctx = SPDK_CONTAINEROF(user_opts, struct discovery_ctx, opts);
SPDK_DEBUGLOG(bdev_nvme, "discovery ctrlr attached\n"); DISCOVERY_DEBUGLOG(ctx, "discovery ctrlr attached\n");
ctx->probe_ctx = NULL; ctx->probe_ctx = NULL;
ctx->ctrlr = ctrlr; ctx->ctrlr = ctrlr;
spdk_nvme_ctrlr_register_aer_callback(ctx->ctrlr, discovery_aer_cb, ctx); spdk_nvme_ctrlr_register_aer_callback(ctx->ctrlr, discovery_aer_cb, ctx);
@ -4438,7 +4444,7 @@ discovery_poller(void *arg)
if (ctx->detach_ctx == NULL) { if (ctx->detach_ctx == NULL) {
rc = spdk_nvme_detach_async(ctx->ctrlr, &ctx->detach_ctx); rc = spdk_nvme_detach_async(ctx->ctrlr, &ctx->detach_ctx);
if (rc != 0) { if (rc != 0) {
SPDK_ERRLOG("could not detach discovery ctrlr\n"); DISCOVERY_ERRLOG(ctx, "could not detach discovery ctrlr\n");
detach_done = true; detach_done = true;
} }
} else { } else {
@ -4504,7 +4510,7 @@ bdev_nvme_start_discovery(struct spdk_nvme_transport_id *trid,
} }
ctx->probe_ctx = spdk_nvme_connect_async(&ctx->trid, &ctx->opts, discovery_attach_cb); ctx->probe_ctx = spdk_nvme_connect_async(&ctx->trid, &ctx->opts, discovery_attach_cb);
if (ctx->probe_ctx == NULL) { if (ctx->probe_ctx == NULL) {
SPDK_ERRLOG("could not start discovery connect\n"); DISCOVERY_ERRLOG(ctx, "could not start discovery connect\n");
free_discovery_ctx(ctx); free_discovery_ctx(ctx);
return -EIO; return -EIO;
} }