bdev/nvme: Return the created ctrlr directly from nvme_bdev_ctrlr_create()

This also simplifies the code.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I32ca5e24779dc60e0ff4cf2610951cce55d06c75
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6622
Community-CI: Broadcom CI
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Shuhei Matsumoto 2021-03-02 11:12:18 +09:00 committed by Tomasz Zawadzki
parent 949b21f143
commit e8cde79560
2 changed files with 22 additions and 30 deletions

View File

@ -1519,7 +1519,8 @@ static int
nvme_bdev_ctrlr_create(struct spdk_nvme_ctrlr *ctrlr, nvme_bdev_ctrlr_create(struct spdk_nvme_ctrlr *ctrlr,
const char *name, const char *name,
const struct spdk_nvme_transport_id *trid, const struct spdk_nvme_transport_id *trid,
uint32_t prchk_flags) uint32_t prchk_flags,
struct nvme_bdev_ctrlr **_nvme_bdev_ctrlr)
{ {
struct nvme_bdev_ctrlr *nvme_bdev_ctrlr; struct nvme_bdev_ctrlr *nvme_bdev_ctrlr;
struct nvme_bdev_ctrlr_trid *trid_entry; struct nvme_bdev_ctrlr_trid *trid_entry;
@ -1608,6 +1609,10 @@ nvme_bdev_ctrlr_create(struct spdk_nvme_ctrlr *ctrlr,
} }
TAILQ_INSERT_HEAD(&nvme_bdev_ctrlr->trids, trid_entry, link); TAILQ_INSERT_HEAD(&nvme_bdev_ctrlr->trids, trid_entry, link);
if (_nvme_bdev_ctrlr != NULL) {
*_nvme_bdev_ctrlr = nvme_bdev_ctrlr;
}
return 0; return 0;
err_init_ocssd: err_init_ocssd:
@ -1634,6 +1639,7 @@ attach_cb(void *cb_ctx, const struct spdk_nvme_transport_id *trid,
char *name = NULL; char *name = NULL;
uint32_t prchk_flags = 0; uint32_t prchk_flags = 0;
size_t i; size_t i;
int rc;
if (ctx) { if (ctx) {
for (i = 0; i < ctx->count; i++) { for (i = 0; i < ctx->count; i++) {
@ -1653,11 +1659,9 @@ attach_cb(void *cb_ctx, const struct spdk_nvme_transport_id *trid,
SPDK_DEBUGLOG(bdev_nvme, "Attached to %s (%s)\n", trid->traddr, name); SPDK_DEBUGLOG(bdev_nvme, "Attached to %s (%s)\n", trid->traddr, name);
nvme_bdev_ctrlr_create(ctrlr, name, trid, prchk_flags); rc = nvme_bdev_ctrlr_create(ctrlr, name, trid, prchk_flags, &nvme_bdev_ctrlr);
if (rc != 0) {
nvme_bdev_ctrlr = nvme_bdev_ctrlr_get(trid); SPDK_ERRLOG("Failed to create new NVMe controller\n");
if (!nvme_bdev_ctrlr) {
SPDK_ERRLOG("Failed to find new NVMe controller\n");
free(name); free(name);
return; return;
} }
@ -1974,15 +1978,13 @@ connect_attach_cb(void *cb_ctx, const struct spdk_nvme_transport_id *trid,
goto exit; goto exit;
} }
rc = nvme_bdev_ctrlr_create(ctrlr, ctx->base_name, &ctx->trid, ctx->prchk_flags); rc = nvme_bdev_ctrlr_create(ctrlr, ctx->base_name, &ctx->trid, ctx->prchk_flags,
&nvme_bdev_ctrlr);
if (rc) { if (rc) {
SPDK_ERRLOG("Failed to create new device\n"); SPDK_ERRLOG("Failed to create new device\n");
goto exit; goto exit;
} }
nvme_bdev_ctrlr = nvme_bdev_ctrlr_get(&ctx->trid);
assert(nvme_bdev_ctrlr != NULL);
nvme_ctrlr_populate_namespaces(nvme_bdev_ctrlr, ctx); nvme_ctrlr_populate_namespaces(nvme_bdev_ctrlr, ctx);
return; return;

View File

@ -820,7 +820,7 @@ test_create_ctrlr(void)
ut_init_trid(&trid); ut_init_trid(&trid);
rc = nvme_bdev_ctrlr_create(&ctrlr, "nvme0", &trid, 0); rc = nvme_bdev_ctrlr_create(&ctrlr, "nvme0", &trid, 0, NULL);
CU_ASSERT(rc == 0); CU_ASSERT(rc == 0);
CU_ASSERT(nvme_bdev_ctrlr_get_by_name("nvme0") != NULL); CU_ASSERT(nvme_bdev_ctrlr_get_by_name("nvme0") != NULL);
@ -840,7 +840,7 @@ test_reset_ctrlr(void)
{ {
struct spdk_nvme_transport_id trid = {}; struct spdk_nvme_transport_id trid = {};
struct spdk_nvme_ctrlr ctrlr = {}; struct spdk_nvme_ctrlr ctrlr = {};
struct nvme_bdev_ctrlr *nvme_bdev_ctrlr; struct nvme_bdev_ctrlr *nvme_bdev_ctrlr = NULL;
struct nvme_bdev_ctrlr_trid *curr_trid; struct nvme_bdev_ctrlr_trid *curr_trid;
struct spdk_io_channel *ch1, *ch2; struct spdk_io_channel *ch1, *ch2;
struct nvme_io_channel *nvme_ch1, *nvme_ch2; struct nvme_io_channel *nvme_ch1, *nvme_ch2;
@ -851,10 +851,8 @@ test_reset_ctrlr(void)
set_thread(0); set_thread(0);
rc = nvme_bdev_ctrlr_create(&ctrlr, "nvme0", &trid, 0); rc = nvme_bdev_ctrlr_create(&ctrlr, "nvme0", &trid, 0, &nvme_bdev_ctrlr);
CU_ASSERT(rc == 0); CU_ASSERT(rc == 0);
nvme_bdev_ctrlr = nvme_bdev_ctrlr_get_by_name("nvme0");
SPDK_CU_ASSERT_FATAL(nvme_bdev_ctrlr != NULL); SPDK_CU_ASSERT_FATAL(nvme_bdev_ctrlr != NULL);
curr_trid = TAILQ_FIRST(&nvme_bdev_ctrlr->trids); curr_trid = TAILQ_FIRST(&nvme_bdev_ctrlr->trids);
@ -957,10 +955,8 @@ test_race_between_reset_and_destruct_ctrlr(void)
set_thread(0); set_thread(0);
rc = nvme_bdev_ctrlr_create(&ctrlr, "nvme0", &trid, 0); rc = nvme_bdev_ctrlr_create(&ctrlr, "nvme0", &trid, 0, &nvme_bdev_ctrlr);
CU_ASSERT(rc == 0); CU_ASSERT(rc == 0);
nvme_bdev_ctrlr = nvme_bdev_ctrlr_get_by_name("nvme0");
SPDK_CU_ASSERT_FATAL(nvme_bdev_ctrlr != NULL); SPDK_CU_ASSERT_FATAL(nvme_bdev_ctrlr != NULL);
ch1 = spdk_get_io_channel(nvme_bdev_ctrlr); ch1 = spdk_get_io_channel(nvme_bdev_ctrlr);
@ -1019,7 +1015,7 @@ test_failover_ctrlr(void)
{ {
struct spdk_nvme_transport_id trid1 = {}, trid2 = {}; struct spdk_nvme_transport_id trid1 = {}, trid2 = {};
struct spdk_nvme_ctrlr ctrlr = {}; struct spdk_nvme_ctrlr ctrlr = {};
struct nvme_bdev_ctrlr *nvme_bdev_ctrlr; struct nvme_bdev_ctrlr *nvme_bdev_ctrlr = NULL;
struct nvme_bdev_ctrlr_trid *curr_trid, *next_trid; struct nvme_bdev_ctrlr_trid *curr_trid, *next_trid;
struct spdk_io_channel *ch1, *ch2; struct spdk_io_channel *ch1, *ch2;
int rc; int rc;
@ -1030,10 +1026,8 @@ test_failover_ctrlr(void)
set_thread(0); set_thread(0);
rc = nvme_bdev_ctrlr_create(&ctrlr, "nvme0", &trid1, 0); rc = nvme_bdev_ctrlr_create(&ctrlr, "nvme0", &trid1, 0, &nvme_bdev_ctrlr);
CU_ASSERT(rc == 0); CU_ASSERT(rc == 0);
nvme_bdev_ctrlr = nvme_bdev_ctrlr_get_by_name("nvme0");
SPDK_CU_ASSERT_FATAL(nvme_bdev_ctrlr != NULL); SPDK_CU_ASSERT_FATAL(nvme_bdev_ctrlr != NULL);
ch1 = spdk_get_io_channel(nvme_bdev_ctrlr); ch1 = spdk_get_io_channel(nvme_bdev_ctrlr);
@ -1158,7 +1152,7 @@ test_pending_reset(void)
{ {
struct spdk_nvme_transport_id trid = {}; struct spdk_nvme_transport_id trid = {};
struct spdk_nvme_ctrlr ctrlr = {}; struct spdk_nvme_ctrlr ctrlr = {};
struct nvme_bdev_ctrlr *nvme_bdev_ctrlr; struct nvme_bdev_ctrlr *nvme_bdev_ctrlr = NULL;
struct spdk_bdev_io *first_bdev_io, *second_bdev_io; struct spdk_bdev_io *first_bdev_io, *second_bdev_io;
struct nvme_bdev_io *first_bio, *second_bio; struct nvme_bdev_io *first_bio, *second_bio;
struct spdk_io_channel *ch1, *ch2; struct spdk_io_channel *ch1, *ch2;
@ -1180,10 +1174,8 @@ test_pending_reset(void)
set_thread(0); set_thread(0);
rc = nvme_bdev_ctrlr_create(&ctrlr, "nvme0", &trid, 0); rc = nvme_bdev_ctrlr_create(&ctrlr, "nvme0", &trid, 0, &nvme_bdev_ctrlr);
CU_ASSERT(rc == 0); CU_ASSERT(rc == 0);
nvme_bdev_ctrlr = nvme_bdev_ctrlr_get_by_name("nvme0");
SPDK_CU_ASSERT_FATAL(nvme_bdev_ctrlr != NULL); SPDK_CU_ASSERT_FATAL(nvme_bdev_ctrlr != NULL);
ch1 = spdk_get_io_channel(nvme_bdev_ctrlr); ch1 = spdk_get_io_channel(nvme_bdev_ctrlr);
@ -1380,7 +1372,7 @@ test_reconnect_qpair(void)
{ {
struct spdk_nvme_transport_id trid = {}; struct spdk_nvme_transport_id trid = {};
struct spdk_nvme_ctrlr ctrlr = {}; struct spdk_nvme_ctrlr ctrlr = {};
struct nvme_bdev_ctrlr *nvme_bdev_ctrlr; struct nvme_bdev_ctrlr *nvme_bdev_ctrlr = NULL;
struct spdk_io_channel *ch; struct spdk_io_channel *ch;
struct nvme_io_channel *nvme_ch; struct nvme_io_channel *nvme_ch;
int rc; int rc;
@ -1390,10 +1382,8 @@ test_reconnect_qpair(void)
ut_init_trid(&trid); ut_init_trid(&trid);
TAILQ_INIT(&ctrlr.active_io_qpairs); TAILQ_INIT(&ctrlr.active_io_qpairs);
rc = nvme_bdev_ctrlr_create(&ctrlr, "nvme0", &trid, 0); rc = nvme_bdev_ctrlr_create(&ctrlr, "nvme0", &trid, 0, &nvme_bdev_ctrlr);
CU_ASSERT(rc == 0); CU_ASSERT(rc == 0);
nvme_bdev_ctrlr = nvme_bdev_ctrlr_get_by_name("nvme0");
SPDK_CU_ASSERT_FATAL(nvme_bdev_ctrlr != NULL); SPDK_CU_ASSERT_FATAL(nvme_bdev_ctrlr != NULL);
ch = spdk_get_io_channel(nvme_bdev_ctrlr); ch = spdk_get_io_channel(nvme_bdev_ctrlr);