nvmf: ctrlr_discovery.c no longer uses g_nvmf_tgt

Change-Id: I19d1866fb90ffd3e3543ccc66a098571ade3e3de
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.gerrithub.io/375203
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Ben Walker 2017-08-21 13:58:04 -07:00 committed by Jim Harris
parent 656e443dd1
commit f1015fbda6
6 changed files with 31 additions and 25 deletions

View File

@ -821,7 +821,7 @@ spdk_nvmf_ctrlr_get_log_page(struct spdk_nvmf_request *req)
if (subsystem->subtype == SPDK_NVMF_SUBTYPE_DISCOVERY) { if (subsystem->subtype == SPDK_NVMF_SUBTYPE_DISCOVERY) {
switch (lid) { switch (lid) {
case SPDK_NVME_LOG_DISCOVERY: case SPDK_NVME_LOG_DISCOVERY:
spdk_nvmf_get_discovery_log_page(req->data, offset, len); spdk_nvmf_get_discovery_log_page(subsystem->tgt, req->data, offset, len);
return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE; return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE;
default: default:
goto invalid_log_page; goto invalid_log_page;

View File

@ -51,7 +51,7 @@
#include "spdk_internal/log.h" #include "spdk_internal/log.h"
static void static void
nvmf_update_discovery_log(void) nvmf_update_discovery_log(struct spdk_nvmf_tgt *tgt)
{ {
uint64_t numrec = 0; uint64_t numrec = 0;
struct spdk_nvmf_subsystem *subsystem; struct spdk_nvmf_subsystem *subsystem;
@ -63,7 +63,7 @@ nvmf_update_discovery_log(void)
size_t cur_size; size_t cur_size;
SPDK_TRACELOG(SPDK_TRACE_NVMF, "Generating log page for genctr %" PRIu64 "\n", SPDK_TRACELOG(SPDK_TRACE_NVMF, "Generating log page for genctr %" PRIu64 "\n",
g_nvmf_tgt.discovery_genctr); tgt->discovery_genctr);
cur_size = sizeof(struct spdk_nvmf_discovery_log_page); cur_size = sizeof(struct spdk_nvmf_discovery_log_page);
disc_log = calloc(1, cur_size); disc_log = calloc(1, cur_size);
@ -72,7 +72,7 @@ nvmf_update_discovery_log(void)
return; return;
} }
TAILQ_FOREACH(subsystem, &g_nvmf_tgt.subsystems, entries) { TAILQ_FOREACH(subsystem, &tgt->subsystems, entries) {
if (subsystem->subtype == SPDK_NVMF_SUBTYPE_DISCOVERY) { if (subsystem->subtype == SPDK_NVMF_SUBTYPE_DISCOVERY) {
continue; continue;
} }
@ -96,11 +96,11 @@ nvmf_update_discovery_log(void)
memset(entry, 0, sizeof(*entry)); memset(entry, 0, sizeof(*entry));
entry->portid = numrec; entry->portid = numrec;
entry->cntlid = 0xffff; entry->cntlid = 0xffff;
entry->asqsz = g_nvmf_tgt.opts.max_queue_depth; entry->asqsz = tgt->opts.max_queue_depth;
entry->subtype = subsystem->subtype; entry->subtype = subsystem->subtype;
snprintf(entry->subnqn, sizeof(entry->subnqn), "%s", subsystem->subnqn); snprintf(entry->subnqn, sizeof(entry->subnqn), "%s", subsystem->subnqn);
transport = spdk_nvmf_tgt_get_transport(&g_nvmf_tgt, listen_addr->trid.trtype); transport = spdk_nvmf_tgt_get_transport(tgt, listen_addr->trid.trtype);
assert(transport != NULL); assert(transport != NULL);
spdk_nvmf_transport_listen_addr_discover(transport, listen_addr, entry); spdk_nvmf_transport_listen_addr_discover(transport, listen_addr, entry);
@ -110,30 +110,31 @@ nvmf_update_discovery_log(void)
} }
disc_log->numrec = numrec; disc_log->numrec = numrec;
disc_log->genctr = g_nvmf_tgt.discovery_genctr; disc_log->genctr = tgt->discovery_genctr;
free(g_nvmf_tgt.discovery_log_page); free(tgt->discovery_log_page);
g_nvmf_tgt.discovery_log_page = disc_log; tgt->discovery_log_page = disc_log;
g_nvmf_tgt.discovery_log_page_size = cur_size; tgt->discovery_log_page_size = cur_size;
} }
void void
spdk_nvmf_get_discovery_log_page(void *buffer, uint64_t offset, uint32_t length) spdk_nvmf_get_discovery_log_page(struct spdk_nvmf_tgt *tgt, void *buffer,
uint64_t offset, uint32_t length)
{ {
size_t copy_len = 0; size_t copy_len = 0;
size_t zero_len = length; size_t zero_len = length;
if (g_nvmf_tgt.discovery_log_page == NULL || if (tgt->discovery_log_page == NULL ||
g_nvmf_tgt.discovery_log_page->genctr != g_nvmf_tgt.discovery_genctr) { tgt->discovery_log_page->genctr != tgt->discovery_genctr) {
nvmf_update_discovery_log(); nvmf_update_discovery_log(tgt);
} }
/* Copy the valid part of the discovery log page, if any */ /* Copy the valid part of the discovery log page, if any */
if (g_nvmf_tgt.discovery_log_page && offset < g_nvmf_tgt.discovery_log_page_size) { if (tgt->discovery_log_page && offset < tgt->discovery_log_page_size) {
copy_len = spdk_min(g_nvmf_tgt.discovery_log_page_size - offset, length); copy_len = spdk_min(tgt->discovery_log_page_size - offset, length);
zero_len -= copy_len; zero_len -= copy_len;
memcpy(buffer, (char *)g_nvmf_tgt.discovery_log_page + offset, copy_len); memcpy(buffer, (char *)tgt->discovery_log_page + offset, copy_len);
} }
/* Zero out the rest of the buffer */ /* Zero out the rest of the buffer */

View File

@ -41,7 +41,9 @@
struct spdk_nvmf_subsystem *spdk_nvmf_find_subsystem_with_cntlid(uint16_t cntlid); struct spdk_nvmf_subsystem *spdk_nvmf_find_subsystem_with_cntlid(uint16_t cntlid);
void spdk_nvmf_get_discovery_log_page(void *buffer, uint64_t offset, uint32_t length); void spdk_nvmf_get_discovery_log_page(struct spdk_nvmf_tgt *tgt,
void *buffer, uint64_t offset,
uint32_t length);
int spdk_nvmf_subsystem_bdev_attach(struct spdk_nvmf_subsystem *subsystem); int spdk_nvmf_subsystem_bdev_attach(struct spdk_nvmf_subsystem *subsystem);
void spdk_nvmf_subsystem_bdev_detach(struct spdk_nvmf_subsystem *subsystem); void spdk_nvmf_subsystem_bdev_detach(struct spdk_nvmf_subsystem *subsystem);

View File

@ -138,7 +138,8 @@ spdk_nvmf_bdev_ctrlr_identify_ns(struct spdk_bdev *bdev, struct spdk_nvme_ns_dat
} }
void void
spdk_nvmf_get_discovery_log_page(void *buffer, uint64_t offset, uint32_t length) spdk_nvmf_get_discovery_log_page(struct spdk_nvmf_tgt *tgt, void *buffer,
uint64_t offset, uint32_t length)
{ {
abort(); abort();
} }

View File

@ -209,20 +209,21 @@ test_discovery_log(void)
/* Get only genctr (first field in the header) */ /* Get only genctr (first field in the header) */
memset(buffer, 0xCC, sizeof(buffer)); memset(buffer, 0xCC, sizeof(buffer));
disc_log = (struct spdk_nvmf_discovery_log_page *)buffer; disc_log = (struct spdk_nvmf_discovery_log_page *)buffer;
spdk_nvmf_get_discovery_log_page(buffer, 0, sizeof(disc_log->genctr)); spdk_nvmf_get_discovery_log_page(&g_nvmf_tgt, buffer, 0, sizeof(disc_log->genctr));
CU_ASSERT(disc_log->genctr == 1); /* one added subsystem */ CU_ASSERT(disc_log->genctr == 1); /* one added subsystem */
/* Get only the header, no entries */ /* Get only the header, no entries */
memset(buffer, 0xCC, sizeof(buffer)); memset(buffer, 0xCC, sizeof(buffer));
disc_log = (struct spdk_nvmf_discovery_log_page *)buffer; disc_log = (struct spdk_nvmf_discovery_log_page *)buffer;
spdk_nvmf_get_discovery_log_page(buffer, 0, sizeof(*disc_log)); spdk_nvmf_get_discovery_log_page(&g_nvmf_tgt, buffer, 0, sizeof(*disc_log));
CU_ASSERT(disc_log->genctr == 1); CU_ASSERT(disc_log->genctr == 1);
CU_ASSERT(disc_log->numrec == 1); CU_ASSERT(disc_log->numrec == 1);
/* Offset 0, exact size match */ /* Offset 0, exact size match */
memset(buffer, 0xCC, sizeof(buffer)); memset(buffer, 0xCC, sizeof(buffer));
disc_log = (struct spdk_nvmf_discovery_log_page *)buffer; disc_log = (struct spdk_nvmf_discovery_log_page *)buffer;
spdk_nvmf_get_discovery_log_page(buffer, 0, sizeof(*disc_log) + sizeof(disc_log->entries[0])); spdk_nvmf_get_discovery_log_page(&g_nvmf_tgt, buffer, 0,
sizeof(*disc_log) + sizeof(disc_log->entries[0]));
CU_ASSERT(disc_log->genctr != 0); CU_ASSERT(disc_log->genctr != 0);
CU_ASSERT(disc_log->numrec == 1); CU_ASSERT(disc_log->numrec == 1);
CU_ASSERT(disc_log->entries[0].trtype == 42); CU_ASSERT(disc_log->entries[0].trtype == 42);
@ -230,7 +231,7 @@ test_discovery_log(void)
/* Offset 0, oversize buffer */ /* Offset 0, oversize buffer */
memset(buffer, 0xCC, sizeof(buffer)); memset(buffer, 0xCC, sizeof(buffer));
disc_log = (struct spdk_nvmf_discovery_log_page *)buffer; disc_log = (struct spdk_nvmf_discovery_log_page *)buffer;
spdk_nvmf_get_discovery_log_page(buffer, 0, sizeof(buffer)); spdk_nvmf_get_discovery_log_page(&g_nvmf_tgt, buffer, 0, sizeof(buffer));
CU_ASSERT(disc_log->genctr != 0); CU_ASSERT(disc_log->genctr != 0);
CU_ASSERT(disc_log->numrec == 1); CU_ASSERT(disc_log->numrec == 1);
CU_ASSERT(disc_log->entries[0].trtype == 42); CU_ASSERT(disc_log->entries[0].trtype == 42);
@ -240,7 +241,7 @@ test_discovery_log(void)
/* Get just the first entry, no header */ /* Get just the first entry, no header */
memset(buffer, 0xCC, sizeof(buffer)); memset(buffer, 0xCC, sizeof(buffer));
entry = (struct spdk_nvmf_discovery_log_page_entry *)buffer; entry = (struct spdk_nvmf_discovery_log_page_entry *)buffer;
spdk_nvmf_get_discovery_log_page(buffer, spdk_nvmf_get_discovery_log_page(&g_nvmf_tgt, buffer,
offsetof(struct spdk_nvmf_discovery_log_page, entries[0]), offsetof(struct spdk_nvmf_discovery_log_page, entries[0]),
sizeof(*entry)); sizeof(*entry));
CU_ASSERT(entry->trtype == 42); CU_ASSERT(entry->trtype == 42);

View File

@ -134,7 +134,8 @@ spdk_nvmf_property_set(struct spdk_nvmf_ctrlr *ctrlr,
} }
void void
spdk_nvmf_get_discovery_log_page(void *buffer, uint64_t offset, uint32_t length) spdk_nvmf_get_discovery_log_page(struct spdk_nvmf_tgt *tgt, void *buffer,
uint64_t offset, uint32_t length)
{ {
} }