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:
parent
656e443dd1
commit
f1015fbda6
@ -821,7 +821,7 @@ spdk_nvmf_ctrlr_get_log_page(struct spdk_nvmf_request *req)
|
||||
if (subsystem->subtype == SPDK_NVMF_SUBTYPE_DISCOVERY) {
|
||||
switch (lid) {
|
||||
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;
|
||||
default:
|
||||
goto invalid_log_page;
|
||||
|
@ -51,7 +51,7 @@
|
||||
#include "spdk_internal/log.h"
|
||||
|
||||
static void
|
||||
nvmf_update_discovery_log(void)
|
||||
nvmf_update_discovery_log(struct spdk_nvmf_tgt *tgt)
|
||||
{
|
||||
uint64_t numrec = 0;
|
||||
struct spdk_nvmf_subsystem *subsystem;
|
||||
@ -63,7 +63,7 @@ nvmf_update_discovery_log(void)
|
||||
size_t cur_size;
|
||||
|
||||
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);
|
||||
disc_log = calloc(1, cur_size);
|
||||
@ -72,7 +72,7 @@ nvmf_update_discovery_log(void)
|
||||
return;
|
||||
}
|
||||
|
||||
TAILQ_FOREACH(subsystem, &g_nvmf_tgt.subsystems, entries) {
|
||||
TAILQ_FOREACH(subsystem, &tgt->subsystems, entries) {
|
||||
if (subsystem->subtype == SPDK_NVMF_SUBTYPE_DISCOVERY) {
|
||||
continue;
|
||||
}
|
||||
@ -96,11 +96,11 @@ nvmf_update_discovery_log(void)
|
||||
memset(entry, 0, sizeof(*entry));
|
||||
entry->portid = numrec;
|
||||
entry->cntlid = 0xffff;
|
||||
entry->asqsz = g_nvmf_tgt.opts.max_queue_depth;
|
||||
entry->asqsz = tgt->opts.max_queue_depth;
|
||||
entry->subtype = subsystem->subtype;
|
||||
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);
|
||||
|
||||
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->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;
|
||||
g_nvmf_tgt.discovery_log_page_size = cur_size;
|
||||
tgt->discovery_log_page = disc_log;
|
||||
tgt->discovery_log_page_size = cur_size;
|
||||
}
|
||||
|
||||
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 zero_len = length;
|
||||
|
||||
if (g_nvmf_tgt.discovery_log_page == NULL ||
|
||||
g_nvmf_tgt.discovery_log_page->genctr != g_nvmf_tgt.discovery_genctr) {
|
||||
nvmf_update_discovery_log();
|
||||
if (tgt->discovery_log_page == NULL ||
|
||||
tgt->discovery_log_page->genctr != tgt->discovery_genctr) {
|
||||
nvmf_update_discovery_log(tgt);
|
||||
}
|
||||
|
||||
/* 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) {
|
||||
copy_len = spdk_min(g_nvmf_tgt.discovery_log_page_size - offset, length);
|
||||
if (tgt->discovery_log_page && offset < tgt->discovery_log_page_size) {
|
||||
copy_len = spdk_min(tgt->discovery_log_page_size - offset, length);
|
||||
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 */
|
||||
|
@ -41,7 +41,9 @@
|
||||
|
||||
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);
|
||||
void spdk_nvmf_subsystem_bdev_detach(struct spdk_nvmf_subsystem *subsystem);
|
||||
|
@ -138,7 +138,8 @@ spdk_nvmf_bdev_ctrlr_identify_ns(struct spdk_bdev *bdev, struct spdk_nvme_ns_dat
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
|
@ -209,20 +209,21 @@ test_discovery_log(void)
|
||||
/* Get only genctr (first field in the header) */
|
||||
memset(buffer, 0xCC, sizeof(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 */
|
||||
|
||||
/* Get only the header, no entries */
|
||||
memset(buffer, 0xCC, sizeof(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->numrec == 1);
|
||||
|
||||
/* Offset 0, exact size match */
|
||||
memset(buffer, 0xCC, sizeof(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->numrec == 1);
|
||||
CU_ASSERT(disc_log->entries[0].trtype == 42);
|
||||
@ -230,7 +231,7 @@ test_discovery_log(void)
|
||||
/* Offset 0, oversize buffer */
|
||||
memset(buffer, 0xCC, sizeof(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->numrec == 1);
|
||||
CU_ASSERT(disc_log->entries[0].trtype == 42);
|
||||
@ -240,7 +241,7 @@ test_discovery_log(void)
|
||||
/* Get just the first entry, no header */
|
||||
memset(buffer, 0xCC, sizeof(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]),
|
||||
sizeof(*entry));
|
||||
CU_ASSERT(entry->trtype == 42);
|
||||
|
@ -134,7 +134,8 @@ spdk_nvmf_property_set(struct spdk_nvmf_ctrlr *ctrlr,
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user