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) {
|
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;
|
||||||
|
@ -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 */
|
||||||
|
@ -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);
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user