nvmf: Use trtype enum in transport instead of strings
Change-Id: Ie05f58e677107072fea6cc7702bab47a077cb595 Signed-off-by: Ben Walker <benjamin.walker@intel.com> Reviewed-on: https://review.gerrithub.io/370743 Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com> Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
This commit is contained in:
parent
402288ac68
commit
29f6172a56
@ -75,9 +75,9 @@ dump_nvmf_subsystem(struct spdk_json_write_ctx *w, struct nvmf_tgt_subsystem *tg
|
|||||||
spdk_json_write_object_begin(w);
|
spdk_json_write_object_begin(w);
|
||||||
/* NOTE: "transport" is kept for compatibility; new code should use "trtype" */
|
/* NOTE: "transport" is kept for compatibility; new code should use "trtype" */
|
||||||
spdk_json_write_name(w, "transport");
|
spdk_json_write_name(w, "transport");
|
||||||
spdk_json_write_string(w, listen_addr->trname);
|
spdk_json_write_string(w, spdk_nvme_transport_id_trtype_str(listen_addr->trtype));
|
||||||
spdk_json_write_name(w, "trtype");
|
spdk_json_write_name(w, "trtype");
|
||||||
spdk_json_write_string(w, listen_addr->trname);
|
spdk_json_write_string(w, spdk_nvme_transport_id_trtype_str(listen_addr->trtype));
|
||||||
|
|
||||||
if (adrfam) {
|
if (adrfam) {
|
||||||
spdk_json_write_name(w, "adrfam");
|
spdk_json_write_name(w, "adrfam");
|
||||||
|
@ -41,6 +41,7 @@
|
|||||||
#include "spdk/stdinc.h"
|
#include "spdk/stdinc.h"
|
||||||
|
|
||||||
#include "spdk/env.h"
|
#include "spdk/env.h"
|
||||||
|
#include "spdk/nvme.h"
|
||||||
#include "spdk/nvmf_spec.h"
|
#include "spdk/nvmf_spec.h"
|
||||||
#include "spdk/queue.h"
|
#include "spdk/queue.h"
|
||||||
|
|
||||||
@ -67,9 +68,9 @@ typedef void (*spdk_nvmf_subsystem_connect_fn)(void *cb_ctx, struct spdk_nvmf_re
|
|||||||
typedef void (*spdk_nvmf_subsystem_disconnect_fn)(void *cb_ctx, struct spdk_nvmf_conn *conn);
|
typedef void (*spdk_nvmf_subsystem_disconnect_fn)(void *cb_ctx, struct spdk_nvmf_conn *conn);
|
||||||
|
|
||||||
struct spdk_nvmf_listen_addr {
|
struct spdk_nvmf_listen_addr {
|
||||||
|
enum spdk_nvme_transport_type trtype;
|
||||||
char *traddr;
|
char *traddr;
|
||||||
char *trsvcid;
|
char *trsvcid;
|
||||||
char *trname;
|
|
||||||
enum spdk_nvmf_adrfam adrfam;
|
enum spdk_nvmf_adrfam adrfam;
|
||||||
TAILQ_ENTRY(spdk_nvmf_listen_addr) link;
|
TAILQ_ENTRY(spdk_nvmf_listen_addr) link;
|
||||||
};
|
};
|
||||||
|
@ -99,7 +99,7 @@ nvmf_update_discovery_log(void)
|
|||||||
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_transport_get(listen_addr->trname);
|
transport = spdk_nvmf_transport_get(listen_addr->trtype);
|
||||||
assert(transport != NULL);
|
assert(transport != NULL);
|
||||||
|
|
||||||
transport->listen_addr_discover(listen_addr, entry);
|
transport->listen_addr_discover(listen_addr, entry);
|
||||||
|
@ -97,13 +97,15 @@ spdk_nvmf_tgt_fini(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct spdk_nvmf_listen_addr *
|
struct spdk_nvmf_listen_addr *
|
||||||
spdk_nvmf_listen_addr_create(const char *trname, enum spdk_nvmf_adrfam adrfam, const char *traddr,
|
spdk_nvmf_listen_addr_create(enum spdk_nvme_transport_type trtype,
|
||||||
|
enum spdk_nvmf_adrfam adrfam,
|
||||||
|
const char *traddr,
|
||||||
const char *trsvcid)
|
const char *trsvcid)
|
||||||
{
|
{
|
||||||
struct spdk_nvmf_listen_addr *listen_addr;
|
struct spdk_nvmf_listen_addr *listen_addr;
|
||||||
const struct spdk_nvmf_transport *transport;
|
const struct spdk_nvmf_transport *transport;
|
||||||
|
|
||||||
transport = spdk_nvmf_transport_get(trname);
|
transport = spdk_nvmf_transport_get(trtype);
|
||||||
if (!transport) {
|
if (!transport) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -113,6 +115,7 @@ spdk_nvmf_listen_addr_create(const char *trname, enum spdk_nvmf_adrfam adrfam, c
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
listen_addr->trtype = trtype;
|
||||||
listen_addr->adrfam = adrfam;
|
listen_addr->adrfam = adrfam;
|
||||||
|
|
||||||
listen_addr->traddr = strdup(traddr);
|
listen_addr->traddr = strdup(traddr);
|
||||||
@ -128,14 +131,6 @@ spdk_nvmf_listen_addr_create(const char *trname, enum spdk_nvmf_adrfam adrfam, c
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
listen_addr->trname = strdup(trname);
|
|
||||||
if (!listen_addr->trname) {
|
|
||||||
free(listen_addr->traddr);
|
|
||||||
free(listen_addr->trsvcid);
|
|
||||||
free(listen_addr);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return listen_addr;
|
return listen_addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -144,7 +139,7 @@ spdk_nvmf_listen_addr_destroy(struct spdk_nvmf_listen_addr *addr)
|
|||||||
{
|
{
|
||||||
const struct spdk_nvmf_transport *transport;
|
const struct spdk_nvmf_transport *transport;
|
||||||
|
|
||||||
transport = spdk_nvmf_transport_get(addr->trname);
|
transport = spdk_nvmf_transport_get(addr->trtype);
|
||||||
assert(transport != NULL);
|
assert(transport != NULL);
|
||||||
transport->listen_addr_remove(addr);
|
transport->listen_addr_remove(addr);
|
||||||
|
|
||||||
@ -154,7 +149,6 @@ spdk_nvmf_listen_addr_destroy(struct spdk_nvmf_listen_addr *addr)
|
|||||||
void
|
void
|
||||||
spdk_nvmf_listen_addr_cleanup(struct spdk_nvmf_listen_addr *addr)
|
spdk_nvmf_listen_addr_cleanup(struct spdk_nvmf_listen_addr *addr)
|
||||||
{
|
{
|
||||||
free(addr->trname);
|
|
||||||
free(addr->trsvcid);
|
free(addr->trsvcid);
|
||||||
free(addr->traddr);
|
free(addr->traddr);
|
||||||
free(addr);
|
free(addr);
|
||||||
|
@ -91,7 +91,7 @@ struct spdk_nvmf_tgt {
|
|||||||
|
|
||||||
extern struct spdk_nvmf_tgt g_nvmf_tgt;
|
extern struct spdk_nvmf_tgt g_nvmf_tgt;
|
||||||
|
|
||||||
struct spdk_nvmf_listen_addr *spdk_nvmf_listen_addr_create(const char *trname,
|
struct spdk_nvmf_listen_addr *spdk_nvmf_listen_addr_create(enum spdk_nvme_transport_type trtype,
|
||||||
enum spdk_nvmf_adrfam adrfam, const char *traddr, const char *trsvcid);
|
enum spdk_nvmf_adrfam adrfam, const char *traddr, const char *trsvcid);
|
||||||
void spdk_nvmf_listen_addr_destroy(struct spdk_nvmf_listen_addr *addr);
|
void spdk_nvmf_listen_addr_destroy(struct spdk_nvmf_listen_addr *addr);
|
||||||
void spdk_nvmf_listen_addr_cleanup(struct spdk_nvmf_listen_addr *addr);
|
void spdk_nvmf_listen_addr_cleanup(struct spdk_nvmf_listen_addr *addr);
|
||||||
|
@ -1592,7 +1592,7 @@ spdk_nvmf_rdma_conn_is_idle(struct spdk_nvmf_conn *conn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
const struct spdk_nvmf_transport spdk_nvmf_transport_rdma = {
|
const struct spdk_nvmf_transport spdk_nvmf_transport_rdma = {
|
||||||
.name = "rdma",
|
.type = SPDK_NVME_TRANSPORT_RDMA,
|
||||||
.transport_init = spdk_nvmf_rdma_init,
|
.transport_init = spdk_nvmf_rdma_init,
|
||||||
.transport_fini = spdk_nvmf_rdma_fini,
|
.transport_fini = spdk_nvmf_rdma_fini,
|
||||||
|
|
||||||
|
@ -264,10 +264,17 @@ spdk_nvmf_tgt_listen(const char *trname, enum spdk_nvmf_adrfam adrfam, const cha
|
|||||||
{
|
{
|
||||||
struct spdk_nvmf_listen_addr *listen_addr;
|
struct spdk_nvmf_listen_addr *listen_addr;
|
||||||
const struct spdk_nvmf_transport *transport;
|
const struct spdk_nvmf_transport *transport;
|
||||||
|
enum spdk_nvme_transport_type trtype;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
|
rc = spdk_nvme_transport_id_parse_trtype(&trtype, trname);
|
||||||
|
if (rc) {
|
||||||
|
SPDK_ERRLOG("Invalid transport type '%s'", trname);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
TAILQ_FOREACH(listen_addr, &g_nvmf_tgt.listen_addrs, link) {
|
TAILQ_FOREACH(listen_addr, &g_nvmf_tgt.listen_addrs, link) {
|
||||||
if ((strcmp(listen_addr->trname, trname) == 0) &&
|
if (trtype == listen_addr->trtype &&
|
||||||
(listen_addr->adrfam == adrfam) &&
|
(listen_addr->adrfam == adrfam) &&
|
||||||
(strcmp(listen_addr->traddr, traddr) == 0) &&
|
(strcmp(listen_addr->traddr, traddr) == 0) &&
|
||||||
(strcmp(listen_addr->trsvcid, trsvcid) == 0)) {
|
(strcmp(listen_addr->trsvcid, trsvcid) == 0)) {
|
||||||
@ -275,13 +282,13 @@ spdk_nvmf_tgt_listen(const char *trname, enum spdk_nvmf_adrfam adrfam, const cha
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
transport = spdk_nvmf_transport_get(trname);
|
transport = spdk_nvmf_transport_get(trtype);
|
||||||
if (!transport) {
|
if (!transport) {
|
||||||
SPDK_ERRLOG("Unknown transport '%s'\n", trname);
|
SPDK_ERRLOG("Unknown transport '%s'\n", trname);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
listen_addr = spdk_nvmf_listen_addr_create(trname, adrfam, traddr, trsvcid);
|
listen_addr = spdk_nvmf_listen_addr_create(trtype, adrfam, traddr, trsvcid);
|
||||||
if (!listen_addr) {
|
if (!listen_addr) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,8 @@ spdk_nvmf_transport_init(void)
|
|||||||
for (i = 0; i != NUM_TRANSPORTS; i++) {
|
for (i = 0; i != NUM_TRANSPORTS; i++) {
|
||||||
if (g_transports[i]->transport_init(g_nvmf_tgt.max_queue_depth, g_nvmf_tgt.max_io_size,
|
if (g_transports[i]->transport_init(g_nvmf_tgt.max_queue_depth, g_nvmf_tgt.max_io_size,
|
||||||
g_nvmf_tgt.in_capsule_data_size) < 0) {
|
g_nvmf_tgt.in_capsule_data_size) < 0) {
|
||||||
SPDK_NOTICELOG("%s transport init failed\n", g_transports[i]->name);
|
SPDK_NOTICELOG("Transport type %s init failed\n",
|
||||||
|
spdk_nvme_transport_id_trtype_str(g_transports[i]->type));
|
||||||
} else {
|
} else {
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
@ -76,7 +77,8 @@ spdk_nvmf_transport_fini(void)
|
|||||||
|
|
||||||
for (i = 0; i != NUM_TRANSPORTS; i++) {
|
for (i = 0; i != NUM_TRANSPORTS; i++) {
|
||||||
if (g_transports[i]->transport_fini() < 0) {
|
if (g_transports[i]->transport_fini() < 0) {
|
||||||
SPDK_NOTICELOG("%s transport fini failed\n", g_transports[i]->name);
|
SPDK_NOTICELOG("Transport type %s fini failed\n",
|
||||||
|
spdk_nvme_transport_id_trtype_str(g_transports[i]->type));
|
||||||
} else {
|
} else {
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
@ -96,12 +98,12 @@ spdk_nvmf_acceptor_poll(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
const struct spdk_nvmf_transport *
|
const struct spdk_nvmf_transport *
|
||||||
spdk_nvmf_transport_get(const char *name)
|
spdk_nvmf_transport_get(enum spdk_nvme_transport_type type)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
for (i = 0; i != NUM_TRANSPORTS; i++) {
|
for (i = 0; i != NUM_TRANSPORTS; i++) {
|
||||||
if (strcasecmp(name, g_transports[i]->name) == 0) {
|
if (type == g_transports[i]->type) {
|
||||||
return g_transports[i];
|
return g_transports[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,15 +36,16 @@
|
|||||||
|
|
||||||
#include "spdk/stdinc.h"
|
#include "spdk/stdinc.h"
|
||||||
|
|
||||||
|
#include "spdk/nvme.h"
|
||||||
#include "spdk/nvmf.h"
|
#include "spdk/nvmf.h"
|
||||||
|
|
||||||
struct spdk_nvmf_listen_addr;
|
struct spdk_nvmf_listen_addr;
|
||||||
|
|
||||||
struct spdk_nvmf_transport {
|
struct spdk_nvmf_transport {
|
||||||
/**
|
/**
|
||||||
* Name of the transport.
|
* Transport type
|
||||||
*/
|
*/
|
||||||
const char *name;
|
enum spdk_nvme_transport_type type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize the transport.
|
* Initialize the transport.
|
||||||
@ -125,7 +126,7 @@ struct spdk_nvmf_transport {
|
|||||||
int spdk_nvmf_transport_init(void);
|
int spdk_nvmf_transport_init(void);
|
||||||
int spdk_nvmf_transport_fini(void);
|
int spdk_nvmf_transport_fini(void);
|
||||||
|
|
||||||
const struct spdk_nvmf_transport *spdk_nvmf_transport_get(const char *name);
|
const struct spdk_nvmf_transport *spdk_nvmf_transport_get(enum spdk_nvme_transport_type type);
|
||||||
|
|
||||||
extern const struct spdk_nvmf_transport spdk_nvmf_transport_rdma;
|
extern const struct spdk_nvmf_transport spdk_nvmf_transport_rdma;
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ struct spdk_nvmf_tgt g_nvmf_tgt = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct spdk_nvmf_listen_addr *
|
struct spdk_nvmf_listen_addr *
|
||||||
spdk_nvmf_listen_addr_create(const char *trname, enum spdk_nvmf_adrfam adrfam,
|
spdk_nvmf_listen_addr_create(enum spdk_nvme_transport_type trtype, enum spdk_nvmf_adrfam adrfam,
|
||||||
const char *traddr, const char *trsvcid)
|
const char *traddr, const char *trsvcid)
|
||||||
{
|
{
|
||||||
struct spdk_nvmf_listen_addr *listen_addr;
|
struct spdk_nvmf_listen_addr *listen_addr;
|
||||||
@ -69,14 +69,7 @@ spdk_nvmf_listen_addr_create(const char *trname, enum spdk_nvmf_adrfam adrfam,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
listen_addr->trname = strdup(trname);
|
listen_addr->trtype = trtype;
|
||||||
if (!listen_addr->trname) {
|
|
||||||
free(listen_addr->traddr);
|
|
||||||
free(listen_addr->trsvcid);
|
|
||||||
free(listen_addr);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
listen_addr->adrfam = adrfam;
|
listen_addr->adrfam = adrfam;
|
||||||
|
|
||||||
return listen_addr;
|
return listen_addr;
|
||||||
@ -120,15 +113,32 @@ static const struct spdk_nvmf_transport test_transport1 = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const struct spdk_nvmf_transport *
|
const struct spdk_nvmf_transport *
|
||||||
spdk_nvmf_transport_get(const char *trname)
|
spdk_nvmf_transport_get(enum spdk_nvme_transport_type trtype)
|
||||||
{
|
{
|
||||||
if (!strcasecmp(trname, "test_transport1")) {
|
if (trtype == SPDK_NVME_TRANSPORT_RDMA) {
|
||||||
return &test_transport1;
|
return &test_transport1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
spdk_nvme_transport_id_parse_trtype(enum spdk_nvme_transport_type *trtype, const char *str)
|
||||||
|
{
|
||||||
|
if (trtype == NULL || str == NULL) {
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcasecmp(str, "PCIe") == 0) {
|
||||||
|
*trtype = SPDK_NVME_TRANSPORT_PCIE;
|
||||||
|
} else if (strcasecmp(str, "RDMA") == 0) {
|
||||||
|
*trtype = SPDK_NVME_TRANSPORT_RDMA;
|
||||||
|
} else {
|
||||||
|
return -ENOENT;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
spdk_nvmf_session_destruct(struct spdk_nvmf_session *session)
|
spdk_nvmf_session_destruct(struct spdk_nvmf_session *session)
|
||||||
{
|
{
|
||||||
@ -227,7 +237,7 @@ test_discovery_log(void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
SPDK_CU_ASSERT_FATAL(subsystem != NULL);
|
SPDK_CU_ASSERT_FATAL(subsystem != NULL);
|
||||||
|
|
||||||
listen_addr = spdk_nvmf_tgt_listen("test_transport1", SPDK_NVMF_ADRFAM_IPV4, "1234", "5678");
|
listen_addr = spdk_nvmf_tgt_listen("RDMA", SPDK_NVMF_ADRFAM_IPV4, "1234", "5678");
|
||||||
SPDK_CU_ASSERT_FATAL(listen_addr != NULL);
|
SPDK_CU_ASSERT_FATAL(listen_addr != NULL);
|
||||||
|
|
||||||
SPDK_CU_ASSERT_FATAL(spdk_nvmf_subsystem_add_listener(subsystem, listen_addr) == 0);
|
SPDK_CU_ASSERT_FATAL(spdk_nvmf_subsystem_add_listener(subsystem, listen_addr) == 0);
|
||||||
|
@ -46,7 +46,8 @@ SPDK_LOG_REGISTER_TRACE_FLAG("nvmf", SPDK_TRACE_NVMF)
|
|||||||
struct spdk_nvmf_tgt g_nvmf_tgt;
|
struct spdk_nvmf_tgt g_nvmf_tgt;
|
||||||
|
|
||||||
struct spdk_nvmf_listen_addr *
|
struct spdk_nvmf_listen_addr *
|
||||||
spdk_nvmf_listen_addr_create(const char *trname, enum spdk_nvmf_adrfam adrfam, const char *traddr,
|
spdk_nvmf_listen_addr_create(enum spdk_nvme_transport_type trtype, enum spdk_nvmf_adrfam adrfam,
|
||||||
|
const char *traddr,
|
||||||
const char *trsvcid)
|
const char *trsvcid)
|
||||||
{
|
{
|
||||||
struct spdk_nvmf_listen_addr *listen_addr;
|
struct spdk_nvmf_listen_addr *listen_addr;
|
||||||
@ -69,14 +70,7 @@ spdk_nvmf_listen_addr_create(const char *trname, enum spdk_nvmf_adrfam adrfam, c
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
listen_addr->trname = strdup(trname);
|
listen_addr->trtype = trtype;
|
||||||
if (!listen_addr->trname) {
|
|
||||||
free(listen_addr->traddr);
|
|
||||||
free(listen_addr->trsvcid);
|
|
||||||
free(listen_addr);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
listen_addr->adrfam = adrfam;
|
listen_addr->adrfam = adrfam;
|
||||||
|
|
||||||
return listen_addr;
|
return listen_addr;
|
||||||
@ -85,7 +79,6 @@ spdk_nvmf_listen_addr_create(const char *trname, enum spdk_nvmf_adrfam adrfam, c
|
|||||||
void
|
void
|
||||||
spdk_nvmf_listen_addr_destroy(struct spdk_nvmf_listen_addr *addr)
|
spdk_nvmf_listen_addr_destroy(struct spdk_nvmf_listen_addr *addr)
|
||||||
{
|
{
|
||||||
free(addr->trname);
|
|
||||||
free(addr->trsvcid);
|
free(addr->trsvcid);
|
||||||
free(addr->traddr);
|
free(addr->traddr);
|
||||||
free(addr);
|
free(addr);
|
||||||
@ -116,15 +109,32 @@ static const struct spdk_nvmf_transport test_transport1 = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const struct spdk_nvmf_transport *
|
const struct spdk_nvmf_transport *
|
||||||
spdk_nvmf_transport_get(const char *trname)
|
spdk_nvmf_transport_get(enum spdk_nvme_transport_type trtype)
|
||||||
{
|
{
|
||||||
if (!strcasecmp(trname, "test_transport1")) {
|
if (trtype == SPDK_NVME_TRANSPORT_RDMA) {
|
||||||
return &test_transport1;
|
return &test_transport1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
spdk_nvme_transport_id_parse_trtype(enum spdk_nvme_transport_type *trtype, const char *str)
|
||||||
|
{
|
||||||
|
if (trtype == NULL || str == NULL) {
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcasecmp(str, "PCIe") == 0) {
|
||||||
|
*trtype = SPDK_NVME_TRANSPORT_PCIE;
|
||||||
|
} else if (strcasecmp(str, "RDMA") == 0) {
|
||||||
|
*trtype = SPDK_NVME_TRANSPORT_RDMA;
|
||||||
|
} else {
|
||||||
|
return -ENOENT;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int32_t
|
int32_t
|
||||||
spdk_nvme_ctrlr_process_admin_completions(struct spdk_nvme_ctrlr *ctrlr)
|
spdk_nvme_ctrlr_process_admin_completions(struct spdk_nvme_ctrlr *ctrlr)
|
||||||
{
|
{
|
||||||
@ -173,18 +183,16 @@ test_spdk_nvmf_tgt_listen(void)
|
|||||||
struct spdk_nvmf_listen_addr *listen_addr;
|
struct spdk_nvmf_listen_addr *listen_addr;
|
||||||
|
|
||||||
/* Invalid trname */
|
/* Invalid trname */
|
||||||
const char *trname = "test_invalid_trname";
|
|
||||||
enum spdk_nvmf_adrfam adrfam = SPDK_NVMF_ADRFAM_IPV4;
|
enum spdk_nvmf_adrfam adrfam = SPDK_NVMF_ADRFAM_IPV4;
|
||||||
const char *traddr = "192.168.100.1";
|
const char *traddr = "192.168.100.1";
|
||||||
const char *trsvcid = "4420";
|
const char *trsvcid = "4420";
|
||||||
CU_ASSERT(spdk_nvmf_tgt_listen(trname, adrfam, traddr, trsvcid) == NULL);
|
CU_ASSERT(spdk_nvmf_tgt_listen("INVALID", adrfam, traddr, trsvcid) == NULL);
|
||||||
|
|
||||||
/* Listen addr is not create and create valid listen addr */
|
/* Listen addr is not create and create valid listen addr */
|
||||||
trname = "test_transport1";
|
|
||||||
adrfam = SPDK_NVMF_ADRFAM_IPV4;
|
adrfam = SPDK_NVMF_ADRFAM_IPV4;
|
||||||
traddr = "192.168.3.11";
|
traddr = "192.168.3.11";
|
||||||
trsvcid = "3320";
|
trsvcid = "3320";
|
||||||
listen_addr = spdk_nvmf_tgt_listen(trname, adrfam, traddr, trsvcid);
|
listen_addr = spdk_nvmf_tgt_listen("RDMA", adrfam, traddr, trsvcid);
|
||||||
SPDK_CU_ASSERT_FATAL(listen_addr != NULL);
|
SPDK_CU_ASSERT_FATAL(listen_addr != NULL);
|
||||||
CU_ASSERT(listen_addr->traddr != NULL);
|
CU_ASSERT(listen_addr->traddr != NULL);
|
||||||
CU_ASSERT(listen_addr->trsvcid != NULL);
|
CU_ASSERT(listen_addr->trsvcid != NULL);
|
||||||
|
Loading…
Reference in New Issue
Block a user