bdev/nvme: Move per controller settings into a option structure
The following patches will enable us to specify I/O error resiliency options per nvme_ctrlr as global options. To do it easier, move per controller options about I/O error resiliency into struct nvme_ctrlr_opts. prchk_flags is not exactly for resiliency but move it into struct nvme_ctrlr_opts too. Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com> Change-Id: I85fd1738bb6e293cd804b086ade82274485f213d Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11829 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
df32eb112b
commit
00a7998254
@ -747,7 +747,7 @@ nvme_io_path_is_failed(struct nvme_io_path *io_path)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (nvme_ctrlr->resetting) {
|
if (nvme_ctrlr->resetting) {
|
||||||
if (nvme_ctrlr->reconnect_delay_sec != 0) {
|
if (nvme_ctrlr->opts.reconnect_delay_sec != 0) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
return true;
|
return true;
|
||||||
@ -1319,13 +1319,13 @@ bdev_nvme_check_ctrlr_loss_timeout(struct nvme_ctrlr *nvme_ctrlr)
|
|||||||
{
|
{
|
||||||
int32_t elapsed;
|
int32_t elapsed;
|
||||||
|
|
||||||
if (nvme_ctrlr->ctrlr_loss_timeout_sec == 0 ||
|
if (nvme_ctrlr->opts.ctrlr_loss_timeout_sec == 0 ||
|
||||||
nvme_ctrlr->ctrlr_loss_timeout_sec == -1) {
|
nvme_ctrlr->opts.ctrlr_loss_timeout_sec == -1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
elapsed = (spdk_get_ticks() - nvme_ctrlr->reset_start_tsc) / spdk_get_ticks_hz();
|
elapsed = (spdk_get_ticks() - nvme_ctrlr->reset_start_tsc) / spdk_get_ticks_hz();
|
||||||
if (elapsed >= nvme_ctrlr->ctrlr_loss_timeout_sec) {
|
if (elapsed >= nvme_ctrlr->opts.ctrlr_loss_timeout_sec) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
@ -1337,12 +1337,12 @@ bdev_nvme_check_fast_io_fail_timeout(struct nvme_ctrlr *nvme_ctrlr)
|
|||||||
{
|
{
|
||||||
uint32_t elapsed;
|
uint32_t elapsed;
|
||||||
|
|
||||||
if (nvme_ctrlr->fast_io_fail_timeout_sec == 0) {
|
if (nvme_ctrlr->opts.fast_io_fail_timeout_sec == 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
elapsed = (spdk_get_ticks() - nvme_ctrlr->reset_start_tsc) / spdk_get_ticks_hz();
|
elapsed = (spdk_get_ticks() - nvme_ctrlr->reset_start_tsc) / spdk_get_ticks_hz();
|
||||||
if (elapsed >= nvme_ctrlr->fast_io_fail_timeout_sec) {
|
if (elapsed >= nvme_ctrlr->opts.fast_io_fail_timeout_sec) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
@ -1364,7 +1364,7 @@ bdev_nvme_check_op_after_reset(struct nvme_ctrlr *nvme_ctrlr, bool success)
|
|||||||
if (nvme_ctrlr_can_be_unregistered(nvme_ctrlr)) {
|
if (nvme_ctrlr_can_be_unregistered(nvme_ctrlr)) {
|
||||||
/* Complete pending destruct after reset completes. */
|
/* Complete pending destruct after reset completes. */
|
||||||
return OP_COMPLETE_PENDING_DESTRUCT;
|
return OP_COMPLETE_PENDING_DESTRUCT;
|
||||||
} else if (success || nvme_ctrlr->reconnect_delay_sec == 0) {
|
} else if (success || nvme_ctrlr->opts.reconnect_delay_sec == 0) {
|
||||||
nvme_ctrlr->reset_start_tsc = 0;
|
nvme_ctrlr->reset_start_tsc = 0;
|
||||||
return OP_NONE;
|
return OP_NONE;
|
||||||
} else if (bdev_nvme_check_ctrlr_loss_timeout(nvme_ctrlr)) {
|
} else if (bdev_nvme_check_ctrlr_loss_timeout(nvme_ctrlr)) {
|
||||||
@ -1420,7 +1420,7 @@ bdev_nvme_start_reconnect_delay_timer(struct nvme_ctrlr *nvme_ctrlr)
|
|||||||
assert(nvme_ctrlr->reconnect_delay_timer == NULL);
|
assert(nvme_ctrlr->reconnect_delay_timer == NULL);
|
||||||
nvme_ctrlr->reconnect_delay_timer = SPDK_POLLER_REGISTER(bdev_nvme_reconnect_delay_timer_expired,
|
nvme_ctrlr->reconnect_delay_timer = SPDK_POLLER_REGISTER(bdev_nvme_reconnect_delay_timer_expired,
|
||||||
nvme_ctrlr,
|
nvme_ctrlr,
|
||||||
nvme_ctrlr->reconnect_delay_sec * SPDK_SEC_TO_USEC);
|
nvme_ctrlr->opts.reconnect_delay_sec * SPDK_SEC_TO_USEC);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -2582,7 +2582,7 @@ nvme_bdev_create(struct nvme_ctrlr *nvme_ctrlr, struct nvme_ns *nvme_ns)
|
|||||||
bdev->opal = nvme_ctrlr->opal_dev != NULL;
|
bdev->opal = nvme_ctrlr->opal_dev != NULL;
|
||||||
|
|
||||||
rc = nvme_disk_create(&bdev->disk, nvme_ctrlr->nbdev_ctrlr->name, nvme_ctrlr->ctrlr,
|
rc = nvme_disk_create(&bdev->disk, nvme_ctrlr->nbdev_ctrlr->name, nvme_ctrlr->ctrlr,
|
||||||
nvme_ns->ns, nvme_ctrlr->prchk_flags, bdev);
|
nvme_ns->ns, nvme_ctrlr->opts.prchk_flags, bdev);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
SPDK_ERRLOG("Failed to create NVMe disk\n");
|
SPDK_ERRLOG("Failed to create NVMe disk\n");
|
||||||
pthread_mutex_destroy(&bdev->mutex);
|
pthread_mutex_destroy(&bdev->mutex);
|
||||||
@ -3429,10 +3429,7 @@ nvme_ctrlr_create(struct spdk_nvme_ctrlr *ctrlr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ctx != NULL) {
|
if (ctx != NULL) {
|
||||||
nvme_ctrlr->prchk_flags = ctx->prchk_flags;
|
memcpy(&nvme_ctrlr->opts, &ctx->bdev_opts, sizeof(ctx->bdev_opts));
|
||||||
nvme_ctrlr->ctrlr_loss_timeout_sec = ctx->ctrlr_loss_timeout_sec;
|
|
||||||
nvme_ctrlr->reconnect_delay_sec = ctx->reconnect_delay_sec;
|
|
||||||
nvme_ctrlr->fast_io_fail_timeout_sec = ctx->fast_io_fail_timeout_sec;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
nvme_ctrlr->adminq_timer_poller = SPDK_POLLER_REGISTER(bdev_nvme_poll_adminq, nvme_ctrlr,
|
nvme_ctrlr->adminq_timer_poller = SPDK_POLLER_REGISTER(bdev_nvme_poll_adminq, nvme_ctrlr,
|
||||||
@ -3944,14 +3941,11 @@ bdev_nvme_create(struct spdk_nvme_transport_id *trid,
|
|||||||
const char *base_name,
|
const char *base_name,
|
||||||
const char **names,
|
const char **names,
|
||||||
uint32_t count,
|
uint32_t count,
|
||||||
uint32_t prchk_flags,
|
|
||||||
spdk_bdev_create_nvme_fn cb_fn,
|
spdk_bdev_create_nvme_fn cb_fn,
|
||||||
void *cb_ctx,
|
void *cb_ctx,
|
||||||
struct spdk_nvme_ctrlr_opts *drv_opts,
|
struct spdk_nvme_ctrlr_opts *drv_opts,
|
||||||
bool multipath,
|
struct nvme_ctrlr_opts *bdev_opts,
|
||||||
int32_t ctrlr_loss_timeout_sec,
|
bool multipath)
|
||||||
uint32_t reconnect_delay_sec,
|
|
||||||
uint32_t fast_io_fail_timeout_sec)
|
|
||||||
{
|
{
|
||||||
struct nvme_probe_skip_entry *entry, *tmp;
|
struct nvme_probe_skip_entry *entry, *tmp;
|
||||||
struct nvme_async_probe_ctx *ctx;
|
struct nvme_async_probe_ctx *ctx;
|
||||||
@ -3965,8 +3959,10 @@ bdev_nvme_create(struct spdk_nvme_transport_id *trid,
|
|||||||
return -EEXIST;
|
return -EEXIST;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!bdev_nvme_check_multipath_params(ctrlr_loss_timeout_sec, reconnect_delay_sec,
|
if (bdev_opts != NULL &&
|
||||||
fast_io_fail_timeout_sec)) {
|
!bdev_nvme_check_multipath_params(bdev_opts->ctrlr_loss_timeout_sec,
|
||||||
|
bdev_opts->reconnect_delay_sec,
|
||||||
|
bdev_opts->fast_io_fail_timeout_sec)) {
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3979,11 +3975,11 @@ bdev_nvme_create(struct spdk_nvme_transport_id *trid,
|
|||||||
ctx->count = count;
|
ctx->count = count;
|
||||||
ctx->cb_fn = cb_fn;
|
ctx->cb_fn = cb_fn;
|
||||||
ctx->cb_ctx = cb_ctx;
|
ctx->cb_ctx = cb_ctx;
|
||||||
ctx->prchk_flags = prchk_flags;
|
|
||||||
ctx->trid = *trid;
|
ctx->trid = *trid;
|
||||||
ctx->ctrlr_loss_timeout_sec = ctrlr_loss_timeout_sec;
|
|
||||||
ctx->reconnect_delay_sec = reconnect_delay_sec;
|
if (bdev_opts) {
|
||||||
ctx->fast_io_fail_timeout_sec = fast_io_fail_timeout_sec;
|
memcpy(&ctx->bdev_opts, bdev_opts, sizeof(*bdev_opts));
|
||||||
|
}
|
||||||
|
|
||||||
if (trid->trtype == SPDK_NVME_TRANSPORT_PCIE) {
|
if (trid->trtype == SPDK_NVME_TRANSPORT_PCIE) {
|
||||||
TAILQ_FOREACH_SAFE(entry, &g_skipped_nvme_ctrlrs, tailq, tmp) {
|
TAILQ_FOREACH_SAFE(entry, &g_skipped_nvme_ctrlrs, tailq, tmp) {
|
||||||
@ -4365,9 +4361,9 @@ discovery_log_page_cb(void *cb_arg, int rc, const struct spdk_nvme_cpl *cpl,
|
|||||||
}
|
}
|
||||||
spdk_nvme_ctrlr_get_default_ctrlr_opts(&new_ctx->drv_opts, sizeof(new_ctx->drv_opts));
|
spdk_nvme_ctrlr_get_default_ctrlr_opts(&new_ctx->drv_opts, sizeof(new_ctx->drv_opts));
|
||||||
snprintf(new_ctx->drv_opts.hostnqn, sizeof(new_ctx->drv_opts.hostnqn), "%s", ctx->hostnqn);
|
snprintf(new_ctx->drv_opts.hostnqn, sizeof(new_ctx->drv_opts.hostnqn), "%s", ctx->hostnqn);
|
||||||
rc = bdev_nvme_create(&new_ctx->trid, new_ctx->name, NULL, 0, 0,
|
rc = bdev_nvme_create(&new_ctx->trid, new_ctx->name, NULL, 0,
|
||||||
discovery_attach_controller_done, new_ctx,
|
discovery_attach_controller_done, new_ctx,
|
||||||
&new_ctx->drv_opts, true, 0, 0, 0);
|
&new_ctx->drv_opts, NULL, true);
|
||||||
if (rc == 0) {
|
if (rc == 0) {
|
||||||
TAILQ_INSERT_TAIL(&ctx->nvm_entry_ctxs, new_ctx, tailq);
|
TAILQ_INSERT_TAIL(&ctx->nvm_entry_ctxs, new_ctx, tailq);
|
||||||
ctx->attach_in_progress++;
|
ctx->attach_in_progress++;
|
||||||
@ -5703,12 +5699,13 @@ nvme_ctrlr_config_json(struct spdk_json_write_ctx *w,
|
|||||||
spdk_json_write_named_string(w, "name", nvme_ctrlr->nbdev_ctrlr->name);
|
spdk_json_write_named_string(w, "name", nvme_ctrlr->nbdev_ctrlr->name);
|
||||||
nvme_bdev_dump_trid_json(trid, w);
|
nvme_bdev_dump_trid_json(trid, w);
|
||||||
spdk_json_write_named_bool(w, "prchk_reftag",
|
spdk_json_write_named_bool(w, "prchk_reftag",
|
||||||
(nvme_ctrlr->prchk_flags & SPDK_NVME_IO_FLAGS_PRCHK_REFTAG) != 0);
|
(nvme_ctrlr->opts.prchk_flags & SPDK_NVME_IO_FLAGS_PRCHK_REFTAG) != 0);
|
||||||
spdk_json_write_named_bool(w, "prchk_guard",
|
spdk_json_write_named_bool(w, "prchk_guard",
|
||||||
(nvme_ctrlr->prchk_flags & SPDK_NVME_IO_FLAGS_PRCHK_GUARD) != 0);
|
(nvme_ctrlr->opts.prchk_flags & SPDK_NVME_IO_FLAGS_PRCHK_GUARD) != 0);
|
||||||
spdk_json_write_named_int32(w, "ctrlr_loss_timeout_sec", nvme_ctrlr->ctrlr_loss_timeout_sec);
|
spdk_json_write_named_int32(w, "ctrlr_loss_timeout_sec", nvme_ctrlr->opts.ctrlr_loss_timeout_sec);
|
||||||
spdk_json_write_named_uint32(w, "reconnect_delay_sec", nvme_ctrlr->reconnect_delay_sec);
|
spdk_json_write_named_uint32(w, "reconnect_delay_sec", nvme_ctrlr->opts.reconnect_delay_sec);
|
||||||
spdk_json_write_named_uint32(w, "fast_io_fail_timeout_sec", nvme_ctrlr->fast_io_fail_timeout_sec);
|
spdk_json_write_named_uint32(w, "fast_io_fail_timeout_sec",
|
||||||
|
nvme_ctrlr->opts.fast_io_fail_timeout_sec);
|
||||||
|
|
||||||
spdk_json_write_object_end(w);
|
spdk_json_write_object_end(w);
|
||||||
|
|
||||||
|
@ -52,17 +52,21 @@ typedef void (*spdk_bdev_create_nvme_fn)(void *ctx, size_t bdev_count, int rc);
|
|||||||
typedef void (*spdk_bdev_nvme_start_discovery_fn)(void *ctx, int rc);
|
typedef void (*spdk_bdev_nvme_start_discovery_fn)(void *ctx, int rc);
|
||||||
typedef void (*spdk_bdev_nvme_stop_discovery_fn)(void *ctx);
|
typedef void (*spdk_bdev_nvme_stop_discovery_fn)(void *ctx);
|
||||||
|
|
||||||
|
struct nvme_ctrlr_opts {
|
||||||
|
uint32_t prchk_flags;
|
||||||
|
int32_t ctrlr_loss_timeout_sec;
|
||||||
|
uint32_t reconnect_delay_sec;
|
||||||
|
uint32_t fast_io_fail_timeout_sec;
|
||||||
|
};
|
||||||
|
|
||||||
struct nvme_async_probe_ctx {
|
struct nvme_async_probe_ctx {
|
||||||
struct spdk_nvme_probe_ctx *probe_ctx;
|
struct spdk_nvme_probe_ctx *probe_ctx;
|
||||||
const char *base_name;
|
const char *base_name;
|
||||||
const char **names;
|
const char **names;
|
||||||
uint32_t count;
|
uint32_t count;
|
||||||
uint32_t prchk_flags;
|
|
||||||
int32_t ctrlr_loss_timeout_sec;
|
|
||||||
uint32_t reconnect_delay_sec;
|
|
||||||
uint32_t fast_io_fail_timeout_sec;
|
|
||||||
struct spdk_poller *poller;
|
struct spdk_poller *poller;
|
||||||
struct spdk_nvme_transport_id trid;
|
struct spdk_nvme_transport_id trid;
|
||||||
|
struct nvme_ctrlr_opts bdev_opts;
|
||||||
struct spdk_nvme_ctrlr_opts drv_opts;
|
struct spdk_nvme_ctrlr_opts drv_opts;
|
||||||
spdk_bdev_create_nvme_fn cb_fn;
|
spdk_bdev_create_nvme_fn cb_fn;
|
||||||
void *cb_ctx;
|
void *cb_ctx;
|
||||||
@ -114,12 +118,9 @@ struct nvme_ctrlr {
|
|||||||
uint32_t fast_io_fail_timedout : 1;
|
uint32_t fast_io_fail_timedout : 1;
|
||||||
uint32_t destruct : 1;
|
uint32_t destruct : 1;
|
||||||
uint32_t ana_log_page_updating : 1;
|
uint32_t ana_log_page_updating : 1;
|
||||||
/**
|
|
||||||
* PI check flags. This flags is set to NVMe controllers created only
|
struct nvme_ctrlr_opts opts;
|
||||||
* through bdev_nvme_attach_controller RPC or .INI config file. Hot added
|
|
||||||
* NVMe controllers are not included.
|
|
||||||
*/
|
|
||||||
uint32_t prchk_flags;
|
|
||||||
RB_HEAD(nvme_ns_tree, nvme_ns) namespaces;
|
RB_HEAD(nvme_ns_tree, nvme_ns) namespaces;
|
||||||
|
|
||||||
struct spdk_opal_dev *opal_dev;
|
struct spdk_opal_dev *opal_dev;
|
||||||
@ -148,10 +149,6 @@ struct nvme_ctrlr {
|
|||||||
|
|
||||||
struct nvme_async_probe_ctx *probe_ctx;
|
struct nvme_async_probe_ctx *probe_ctx;
|
||||||
|
|
||||||
uint32_t reconnect_delay_sec;
|
|
||||||
int32_t ctrlr_loss_timeout_sec;
|
|
||||||
uint32_t fast_io_fail_timeout_sec;
|
|
||||||
|
|
||||||
pthread_mutex_t mutex;
|
pthread_mutex_t mutex;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -265,14 +262,11 @@ int bdev_nvme_create(struct spdk_nvme_transport_id *trid,
|
|||||||
const char *base_name,
|
const char *base_name,
|
||||||
const char **names,
|
const char **names,
|
||||||
uint32_t count,
|
uint32_t count,
|
||||||
uint32_t prchk_flags,
|
|
||||||
spdk_bdev_create_nvme_fn cb_fn,
|
spdk_bdev_create_nvme_fn cb_fn,
|
||||||
void *cb_ctx,
|
void *cb_ctx,
|
||||||
struct spdk_nvme_ctrlr_opts *drv_opts,
|
struct spdk_nvme_ctrlr_opts *drv_opts,
|
||||||
bool multipath,
|
struct nvme_ctrlr_opts *bdev_opts,
|
||||||
int32_t ctrlr_loss_timeout_sec,
|
bool multipath);
|
||||||
uint32_t reconnect_delay_sec,
|
|
||||||
uint32_t fast_io_fail_timeout_sec);
|
|
||||||
|
|
||||||
int bdev_nvme_start_discovery(struct spdk_nvme_transport_id *trid, const char *base_name,
|
int bdev_nvme_start_discovery(struct spdk_nvme_transport_id *trid, const char *base_name,
|
||||||
struct spdk_nvme_ctrlr_opts *drv_opts,
|
struct spdk_nvme_ctrlr_opts *drv_opts,
|
||||||
|
@ -181,11 +181,8 @@ struct rpc_bdev_nvme_attach_controller {
|
|||||||
char *hostnqn;
|
char *hostnqn;
|
||||||
char *hostaddr;
|
char *hostaddr;
|
||||||
char *hostsvcid;
|
char *hostsvcid;
|
||||||
uint32_t prchk_flags;
|
|
||||||
char *multipath;
|
char *multipath;
|
||||||
int32_t ctrlr_loss_timeout_sec;
|
struct nvme_ctrlr_opts bdev_opts;
|
||||||
uint32_t reconnect_delay_sec;
|
|
||||||
uint32_t fast_io_fail_timeout_sec;
|
|
||||||
struct spdk_nvme_ctrlr_opts drv_opts;
|
struct spdk_nvme_ctrlr_opts drv_opts;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -248,16 +245,16 @@ static const struct spdk_json_object_decoder rpc_bdev_nvme_attach_controller_dec
|
|||||||
{"hostaddr", offsetof(struct rpc_bdev_nvme_attach_controller, hostaddr), spdk_json_decode_string, true},
|
{"hostaddr", offsetof(struct rpc_bdev_nvme_attach_controller, hostaddr), spdk_json_decode_string, true},
|
||||||
{"hostsvcid", offsetof(struct rpc_bdev_nvme_attach_controller, hostsvcid), spdk_json_decode_string, true},
|
{"hostsvcid", offsetof(struct rpc_bdev_nvme_attach_controller, hostsvcid), spdk_json_decode_string, true},
|
||||||
|
|
||||||
{"prchk_reftag", offsetof(struct rpc_bdev_nvme_attach_controller, prchk_flags), bdev_nvme_decode_reftag, true},
|
{"prchk_reftag", offsetof(struct rpc_bdev_nvme_attach_controller, bdev_opts.prchk_flags), bdev_nvme_decode_reftag, true},
|
||||||
{"prchk_guard", offsetof(struct rpc_bdev_nvme_attach_controller, prchk_flags), bdev_nvme_decode_guard, true},
|
{"prchk_guard", offsetof(struct rpc_bdev_nvme_attach_controller, bdev_opts.prchk_flags), bdev_nvme_decode_guard, true},
|
||||||
{"hdgst", offsetof(struct rpc_bdev_nvme_attach_controller, drv_opts.header_digest), spdk_json_decode_bool, true},
|
{"hdgst", offsetof(struct rpc_bdev_nvme_attach_controller, drv_opts.header_digest), spdk_json_decode_bool, true},
|
||||||
{"ddgst", offsetof(struct rpc_bdev_nvme_attach_controller, drv_opts.data_digest), spdk_json_decode_bool, true},
|
{"ddgst", offsetof(struct rpc_bdev_nvme_attach_controller, drv_opts.data_digest), spdk_json_decode_bool, true},
|
||||||
{"fabrics_connect_timeout_us", offsetof(struct rpc_bdev_nvme_attach_controller, drv_opts.fabrics_connect_timeout_us), spdk_json_decode_uint64, true},
|
{"fabrics_connect_timeout_us", offsetof(struct rpc_bdev_nvme_attach_controller, drv_opts.fabrics_connect_timeout_us), spdk_json_decode_uint64, true},
|
||||||
{"multipath", offsetof(struct rpc_bdev_nvme_attach_controller, multipath), spdk_json_decode_string, true},
|
{"multipath", offsetof(struct rpc_bdev_nvme_attach_controller, multipath), spdk_json_decode_string, true},
|
||||||
{"num_io_queues", offsetof(struct rpc_bdev_nvme_attach_controller, drv_opts.num_io_queues), spdk_json_decode_uint32, true},
|
{"num_io_queues", offsetof(struct rpc_bdev_nvme_attach_controller, drv_opts.num_io_queues), spdk_json_decode_uint32, true},
|
||||||
{"ctrlr_loss_timeout_sec", offsetof(struct rpc_bdev_nvme_attach_controller, ctrlr_loss_timeout_sec), spdk_json_decode_int32, true},
|
{"ctrlr_loss_timeout_sec", offsetof(struct rpc_bdev_nvme_attach_controller, bdev_opts.ctrlr_loss_timeout_sec), spdk_json_decode_int32, true},
|
||||||
{"reconnect_delay_sec", offsetof(struct rpc_bdev_nvme_attach_controller, reconnect_delay_sec), spdk_json_decode_uint32, true},
|
{"reconnect_delay_sec", offsetof(struct rpc_bdev_nvme_attach_controller, bdev_opts.reconnect_delay_sec), spdk_json_decode_uint32, true},
|
||||||
{"fast_io_fail_timeout_sec", offsetof(struct rpc_bdev_nvme_attach_controller, fast_io_fail_timeout_sec), spdk_json_decode_uint32, true},
|
{"fast_io_fail_timeout_sec", offsetof(struct rpc_bdev_nvme_attach_controller, bdev_opts.fast_io_fail_timeout_sec), spdk_json_decode_uint32, true},
|
||||||
};
|
};
|
||||||
|
|
||||||
#define NVME_MAX_BDEVS_PER_RPC 128
|
#define NVME_MAX_BDEVS_PER_RPC 128
|
||||||
@ -495,7 +492,7 @@ rpc_bdev_nvme_attach_controller(struct spdk_jsonrpc_request *request,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->req.prchk_flags) {
|
if (ctx->req.bdev_opts.prchk_flags) {
|
||||||
spdk_jsonrpc_send_error_response_fmt(request, -EINVAL,
|
spdk_jsonrpc_send_error_response_fmt(request, -EINVAL,
|
||||||
"A controller named %s already exists. To add a path, do not specify PI options.\n",
|
"A controller named %s already exists. To add a path, do not specify PI options.\n",
|
||||||
ctx->req.name);
|
ctx->req.name);
|
||||||
@ -516,10 +513,9 @@ rpc_bdev_nvme_attach_controller(struct spdk_jsonrpc_request *request,
|
|||||||
|
|
||||||
ctx->request = request;
|
ctx->request = request;
|
||||||
ctx->count = NVME_MAX_BDEVS_PER_RPC;
|
ctx->count = NVME_MAX_BDEVS_PER_RPC;
|
||||||
rc = bdev_nvme_create(&trid, ctx->req.name, ctx->names, ctx->count, ctx->req.prchk_flags,
|
rc = bdev_nvme_create(&trid, ctx->req.name, ctx->names, ctx->count,
|
||||||
rpc_bdev_nvme_attach_controller_done, ctx, &ctx->req.drv_opts,
|
rpc_bdev_nvme_attach_controller_done, ctx, &ctx->req.drv_opts,
|
||||||
multipath, ctx->req.ctrlr_loss_timeout_sec,
|
&ctx->req.bdev_opts, multipath);
|
||||||
ctx->req.reconnect_delay_sec, ctx->req.fast_io_fail_timeout_sec);
|
|
||||||
if (rc) {
|
if (rc) {
|
||||||
spdk_jsonrpc_send_error_response(request, rc, spdk_strerror(-rc));
|
spdk_jsonrpc_send_error_response(request, rc, spdk_strerror(-rc));
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
@ -1758,8 +1758,8 @@ test_pending_reset(void)
|
|||||||
g_ut_attach_ctrlr_status = 0;
|
g_ut_attach_ctrlr_status = 0;
|
||||||
g_ut_attach_bdev_count = 1;
|
g_ut_attach_bdev_count = 1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, false, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -1889,8 +1889,8 @@ test_attach_ctrlr(void)
|
|||||||
g_ut_attach_ctrlr_status = -EIO;
|
g_ut_attach_ctrlr_status = -EIO;
|
||||||
g_ut_attach_bdev_count = 0;
|
g_ut_attach_bdev_count = 0;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, false, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -1904,8 +1904,8 @@ test_attach_ctrlr(void)
|
|||||||
|
|
||||||
g_ut_attach_ctrlr_status = 0;
|
g_ut_attach_ctrlr_status = 0;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, false, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -1932,8 +1932,8 @@ test_attach_ctrlr(void)
|
|||||||
|
|
||||||
g_ut_attach_bdev_count = 1;
|
g_ut_attach_bdev_count = 1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, false, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -1968,8 +1968,8 @@ test_attach_ctrlr(void)
|
|||||||
g_ut_register_bdev_status = -EINVAL;
|
g_ut_register_bdev_status = -EINVAL;
|
||||||
g_ut_attach_bdev_count = 0;
|
g_ut_attach_bdev_count = 0;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, false, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -2022,8 +2022,8 @@ test_aer_cb(void)
|
|||||||
g_ut_attach_ctrlr_status = 0;
|
g_ut_attach_ctrlr_status = 0;
|
||||||
g_ut_attach_bdev_count = 3;
|
g_ut_attach_bdev_count = 3;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, false, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -2228,8 +2228,8 @@ test_submit_nvme_cmd(void)
|
|||||||
g_ut_attach_ctrlr_status = 0;
|
g_ut_attach_ctrlr_status = 0;
|
||||||
g_ut_attach_bdev_count = 1;
|
g_ut_attach_bdev_count = 1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, false, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -2320,8 +2320,8 @@ test_add_remove_trid(void)
|
|||||||
ctrlr1 = ut_attach_ctrlr(&path1.trid, 0, false, false);
|
ctrlr1 = ut_attach_ctrlr(&path1.trid, 0, false, false);
|
||||||
SPDK_CU_ASSERT_FATAL(ctrlr1 != NULL);
|
SPDK_CU_ASSERT_FATAL(ctrlr1 != NULL);
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path1.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path1.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, false, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -2335,8 +2335,8 @@ test_add_remove_trid(void)
|
|||||||
ctrlr2 = ut_attach_ctrlr(&path2.trid, 0, false, false);
|
ctrlr2 = ut_attach_ctrlr(&path2.trid, 0, false, false);
|
||||||
SPDK_CU_ASSERT_FATAL(ctrlr2 != NULL);
|
SPDK_CU_ASSERT_FATAL(ctrlr2 != NULL);
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, false, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -2365,8 +2365,8 @@ test_add_remove_trid(void)
|
|||||||
ctrlr3 = ut_attach_ctrlr(&path3.trid, 0, false, false);
|
ctrlr3 = ut_attach_ctrlr(&path3.trid, 0, false, false);
|
||||||
SPDK_CU_ASSERT_FATAL(ctrlr3 != NULL);
|
SPDK_CU_ASSERT_FATAL(ctrlr3 != NULL);
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path3.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path3.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, false, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -2412,8 +2412,8 @@ test_add_remove_trid(void)
|
|||||||
ctrlr1 = ut_attach_ctrlr(&path1.trid, 0, false, false);
|
ctrlr1 = ut_attach_ctrlr(&path1.trid, 0, false, false);
|
||||||
SPDK_CU_ASSERT_FATAL(ctrlr1 != NULL);
|
SPDK_CU_ASSERT_FATAL(ctrlr1 != NULL);
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path1.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path1.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, false, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -2427,8 +2427,8 @@ test_add_remove_trid(void)
|
|||||||
ctrlr2 = ut_attach_ctrlr(&path2.trid, 0, false, false);
|
ctrlr2 = ut_attach_ctrlr(&path2.trid, 0, false, false);
|
||||||
SPDK_CU_ASSERT_FATAL(ctrlr2 != NULL);
|
SPDK_CU_ASSERT_FATAL(ctrlr2 != NULL);
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, false, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -2458,6 +2458,7 @@ static void
|
|||||||
test_abort(void)
|
test_abort(void)
|
||||||
{
|
{
|
||||||
struct spdk_nvme_transport_id trid = {};
|
struct spdk_nvme_transport_id trid = {};
|
||||||
|
struct nvme_ctrlr_opts opts = {};
|
||||||
struct spdk_nvme_ctrlr *ctrlr;
|
struct spdk_nvme_ctrlr *ctrlr;
|
||||||
struct nvme_ctrlr *nvme_ctrlr;
|
struct nvme_ctrlr *nvme_ctrlr;
|
||||||
const int STRING_SIZE = 32;
|
const int STRING_SIZE = 32;
|
||||||
@ -2485,8 +2486,11 @@ test_abort(void)
|
|||||||
|
|
||||||
set_thread(1);
|
set_thread(1);
|
||||||
|
|
||||||
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE, 0,
|
opts.ctrlr_loss_timeout_sec = -1;
|
||||||
attach_ctrlr_done, NULL, NULL, false, -1, 1, 0);
|
opts.reconnect_delay_sec = 1;
|
||||||
|
|
||||||
|
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
|
attach_ctrlr_done, NULL, NULL, &opts, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -2734,8 +2738,8 @@ test_bdev_unregister(void)
|
|||||||
g_ut_attach_ctrlr_status = 0;
|
g_ut_attach_ctrlr_status = 0;
|
||||||
g_ut_attach_bdev_count = 2;
|
g_ut_attach_bdev_count = 2;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, false, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -2860,8 +2864,8 @@ test_init_ana_log_page(void)
|
|||||||
g_ut_attach_ctrlr_status = 0;
|
g_ut_attach_ctrlr_status = 0;
|
||||||
g_ut_attach_bdev_count = 5;
|
g_ut_attach_bdev_count = 5;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, false, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -2961,8 +2965,8 @@ test_reconnect_qpair(void)
|
|||||||
g_ut_attach_ctrlr_status = 0;
|
g_ut_attach_ctrlr_status = 0;
|
||||||
g_ut_attach_bdev_count = 1;
|
g_ut_attach_bdev_count = 1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, false, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -3093,8 +3097,8 @@ test_create_bdev_ctrlr(void)
|
|||||||
g_ut_attach_ctrlr_status = 0;
|
g_ut_attach_ctrlr_status = 0;
|
||||||
g_ut_attach_bdev_count = 0;
|
g_ut_attach_bdev_count = 0;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path1.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path1.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, true, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, true);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -3115,8 +3119,8 @@ test_create_bdev_ctrlr(void)
|
|||||||
|
|
||||||
ctrlr2->cdata.cntlid = ctrlr1->cdata.cntlid;
|
ctrlr2->cdata.cntlid = ctrlr1->cdata.cntlid;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, true, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, true);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -3133,8 +3137,8 @@ test_create_bdev_ctrlr(void)
|
|||||||
ctrlr2 = ut_attach_ctrlr(&path2.trid, 0, true, true);
|
ctrlr2 = ut_attach_ctrlr(&path2.trid, 0, true, true);
|
||||||
SPDK_CU_ASSERT_FATAL(ctrlr2 != NULL);
|
SPDK_CU_ASSERT_FATAL(ctrlr2 != NULL);
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, true, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, true);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -3166,8 +3170,8 @@ test_create_bdev_ctrlr(void)
|
|||||||
ctrlr2 = ut_attach_ctrlr(&path2.trid, 0, true, true);
|
ctrlr2 = ut_attach_ctrlr(&path2.trid, 0, true, true);
|
||||||
SPDK_CU_ASSERT_FATAL(ctrlr2 != NULL);
|
SPDK_CU_ASSERT_FATAL(ctrlr2 != NULL);
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path1.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path1.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, true, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, true);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -3176,8 +3180,8 @@ test_create_bdev_ctrlr(void)
|
|||||||
spdk_delay_us(g_opts.nvme_adminq_poll_period_us);
|
spdk_delay_us(g_opts.nvme_adminq_poll_period_us);
|
||||||
poll_threads();
|
poll_threads();
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, true, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, true);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -3271,8 +3275,8 @@ test_add_multi_ns_to_bdev(void)
|
|||||||
g_ut_attach_ctrlr_status = 0;
|
g_ut_attach_ctrlr_status = 0;
|
||||||
g_ut_attach_bdev_count = 3;
|
g_ut_attach_bdev_count = 3;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path1.trid, "nvme0", attached_names, 32, 0,
|
rc = bdev_nvme_create(&path1.trid, "nvme0", attached_names, 32,
|
||||||
attach_ctrlr_done, NULL, NULL, true, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, true);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -3297,8 +3301,8 @@ test_add_multi_ns_to_bdev(void)
|
|||||||
g_ut_attach_ctrlr_status = 0;
|
g_ut_attach_ctrlr_status = 0;
|
||||||
g_ut_attach_bdev_count = 2;
|
g_ut_attach_bdev_count = 2;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, 32, 0,
|
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, 32,
|
||||||
attach_ctrlr_done, NULL, NULL, true, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, true);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -3374,8 +3378,8 @@ test_add_multi_ns_to_bdev(void)
|
|||||||
|
|
||||||
ctrlr1->ns[0].uuid = &uuid1;
|
ctrlr1->ns[0].uuid = &uuid1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path1.trid, "nvme0", attached_names, 32, 0,
|
rc = bdev_nvme_create(&path1.trid, "nvme0", attached_names, 32,
|
||||||
attach_ctrlr_done, NULL, NULL, true, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, true);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -3391,8 +3395,8 @@ test_add_multi_ns_to_bdev(void)
|
|||||||
|
|
||||||
ctrlr2->ns[0].uuid = &uuid1;
|
ctrlr2->ns[0].uuid = &uuid1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, 32, 0,
|
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, 32,
|
||||||
attach_ctrlr_done, NULL, NULL, true, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, true);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -3478,8 +3482,8 @@ test_add_multi_io_paths_to_nbdev_ch(void)
|
|||||||
|
|
||||||
ctrlr1->ns[0].uuid = &uuid1;
|
ctrlr1->ns[0].uuid = &uuid1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path1.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path1.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, true, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, true);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -3493,8 +3497,8 @@ test_add_multi_io_paths_to_nbdev_ch(void)
|
|||||||
|
|
||||||
ctrlr2->ns[0].uuid = &uuid1;
|
ctrlr2->ns[0].uuid = &uuid1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, true, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, true);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -3541,8 +3545,8 @@ test_add_multi_io_paths_to_nbdev_ch(void)
|
|||||||
|
|
||||||
ctrlr3->ns[0].uuid = &uuid1;
|
ctrlr3->ns[0].uuid = &uuid1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path3.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path3.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, true, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, true);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -3621,8 +3625,8 @@ test_admin_path(void)
|
|||||||
|
|
||||||
ctrlr1->ns[0].uuid = &uuid1;
|
ctrlr1->ns[0].uuid = &uuid1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path1.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path1.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, true, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, true);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -3636,8 +3640,8 @@ test_admin_path(void)
|
|||||||
|
|
||||||
ctrlr2->ns[0].uuid = &uuid1;
|
ctrlr2->ns[0].uuid = &uuid1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, true, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, true);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -3750,8 +3754,8 @@ test_reset_bdev_ctrlr(void)
|
|||||||
ctrlr1 = ut_attach_ctrlr(&path1.trid, 1, true, true);
|
ctrlr1 = ut_attach_ctrlr(&path1.trid, 1, true, true);
|
||||||
SPDK_CU_ASSERT_FATAL(ctrlr1 != NULL);
|
SPDK_CU_ASSERT_FATAL(ctrlr1 != NULL);
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path1.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path1.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, true, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, true);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -3763,8 +3767,8 @@ test_reset_bdev_ctrlr(void)
|
|||||||
ctrlr2 = ut_attach_ctrlr(&path2.trid, 1, true, true);
|
ctrlr2 = ut_attach_ctrlr(&path2.trid, 1, true, true);
|
||||||
SPDK_CU_ASSERT_FATAL(ctrlr2 != NULL);
|
SPDK_CU_ASSERT_FATAL(ctrlr2 != NULL);
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, true, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, true);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -4027,6 +4031,7 @@ static void
|
|||||||
test_retry_io_if_ana_state_is_updating(void)
|
test_retry_io_if_ana_state_is_updating(void)
|
||||||
{
|
{
|
||||||
struct nvme_path_id path = {};
|
struct nvme_path_id path = {};
|
||||||
|
struct nvme_ctrlr_opts opts = {};
|
||||||
struct spdk_nvme_ctrlr *ctrlr;
|
struct spdk_nvme_ctrlr *ctrlr;
|
||||||
struct nvme_bdev_ctrlr *nbdev_ctrlr;
|
struct nvme_bdev_ctrlr *nbdev_ctrlr;
|
||||||
struct nvme_ctrlr *nvme_ctrlr;
|
struct nvme_ctrlr *nvme_ctrlr;
|
||||||
@ -4052,8 +4057,11 @@ test_retry_io_if_ana_state_is_updating(void)
|
|||||||
g_ut_attach_ctrlr_status = 0;
|
g_ut_attach_ctrlr_status = 0;
|
||||||
g_ut_attach_bdev_count = 1;
|
g_ut_attach_bdev_count = 1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
opts.ctrlr_loss_timeout_sec = -1;
|
||||||
attach_ctrlr_done, NULL, NULL, false, -1, 1, 0);
|
opts.reconnect_delay_sec = 1;
|
||||||
|
|
||||||
|
rc = bdev_nvme_create(&path.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
|
attach_ctrlr_done, NULL, NULL, &opts, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -4180,8 +4188,8 @@ test_retry_io_for_io_path_error(void)
|
|||||||
|
|
||||||
ctrlr1->ns[0].uuid = &uuid1;
|
ctrlr1->ns[0].uuid = &uuid1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path1.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path1.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, true, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, true);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -4275,8 +4283,8 @@ test_retry_io_for_io_path_error(void)
|
|||||||
|
|
||||||
ctrlr2->ns[0].uuid = &uuid1;
|
ctrlr2->ns[0].uuid = &uuid1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, true, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, true);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -4383,8 +4391,8 @@ test_retry_io_count(void)
|
|||||||
g_ut_attach_ctrlr_status = 0;
|
g_ut_attach_ctrlr_status = 0;
|
||||||
g_ut_attach_bdev_count = 1;
|
g_ut_attach_bdev_count = 1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, false, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -4569,8 +4577,8 @@ test_concurrent_read_ana_log_page(void)
|
|||||||
g_ut_attach_ctrlr_status = 0;
|
g_ut_attach_ctrlr_status = 0;
|
||||||
g_ut_attach_bdev_count = 1;
|
g_ut_attach_bdev_count = 1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, false, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -4664,8 +4672,8 @@ test_retry_io_for_ana_error(void)
|
|||||||
g_ut_attach_ctrlr_status = 0;
|
g_ut_attach_ctrlr_status = 0;
|
||||||
g_ut_attach_bdev_count = 1;
|
g_ut_attach_bdev_count = 1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, false, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -4811,8 +4819,8 @@ test_retry_admin_passthru_for_path_error(void)
|
|||||||
|
|
||||||
ctrlr1->ns[0].uuid = &uuid1;
|
ctrlr1->ns[0].uuid = &uuid1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path1.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path1.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, true, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, true);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -4893,8 +4901,8 @@ test_retry_admin_passthru_for_path_error(void)
|
|||||||
|
|
||||||
ctrlr2->ns[0].uuid = &uuid1;
|
ctrlr2->ns[0].uuid = &uuid1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path2.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, true, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, true);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -4985,8 +4993,8 @@ test_retry_admin_passthru_by_count(void)
|
|||||||
g_ut_attach_ctrlr_status = 0;
|
g_ut_attach_ctrlr_status = 0;
|
||||||
g_ut_attach_bdev_count = 1;
|
g_ut_attach_bdev_count = 1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
rc = bdev_nvme_create(&path.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
attach_ctrlr_done, NULL, NULL, false, 0, 0, 0);
|
attach_ctrlr_done, NULL, NULL, NULL, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -5109,6 +5117,7 @@ static void
|
|||||||
test_retry_io_if_ctrlr_is_resetting(void)
|
test_retry_io_if_ctrlr_is_resetting(void)
|
||||||
{
|
{
|
||||||
struct nvme_path_id path = {};
|
struct nvme_path_id path = {};
|
||||||
|
struct nvme_ctrlr_opts opts = {};
|
||||||
struct spdk_nvme_ctrlr *ctrlr;
|
struct spdk_nvme_ctrlr *ctrlr;
|
||||||
struct nvme_bdev_ctrlr *nbdev_ctrlr;
|
struct nvme_bdev_ctrlr *nbdev_ctrlr;
|
||||||
struct nvme_ctrlr *nvme_ctrlr;
|
struct nvme_ctrlr *nvme_ctrlr;
|
||||||
@ -5134,8 +5143,11 @@ test_retry_io_if_ctrlr_is_resetting(void)
|
|||||||
g_ut_attach_ctrlr_status = 0;
|
g_ut_attach_ctrlr_status = 0;
|
||||||
g_ut_attach_bdev_count = 1;
|
g_ut_attach_bdev_count = 1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
opts.ctrlr_loss_timeout_sec = -1;
|
||||||
attach_ctrlr_done, NULL, NULL, false, -1, 1, 0);
|
opts.reconnect_delay_sec = 1;
|
||||||
|
|
||||||
|
rc = bdev_nvme_create(&path.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
|
attach_ctrlr_done, NULL, NULL, &opts, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -5269,6 +5281,7 @@ static void
|
|||||||
test_retry_admin_passthru_if_ctrlr_is_resetting(void)
|
test_retry_admin_passthru_if_ctrlr_is_resetting(void)
|
||||||
{
|
{
|
||||||
struct nvme_path_id path = {};
|
struct nvme_path_id path = {};
|
||||||
|
struct nvme_ctrlr_opts opts = {};
|
||||||
struct spdk_nvme_ctrlr *ctrlr;
|
struct spdk_nvme_ctrlr *ctrlr;
|
||||||
struct nvme_bdev_ctrlr *nbdev_ctrlr;
|
struct nvme_bdev_ctrlr *nbdev_ctrlr;
|
||||||
struct nvme_ctrlr *nvme_ctrlr;
|
struct nvme_ctrlr *nvme_ctrlr;
|
||||||
@ -5293,8 +5306,11 @@ test_retry_admin_passthru_if_ctrlr_is_resetting(void)
|
|||||||
g_ut_attach_ctrlr_status = 0;
|
g_ut_attach_ctrlr_status = 0;
|
||||||
g_ut_attach_bdev_count = 1;
|
g_ut_attach_bdev_count = 1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
opts.ctrlr_loss_timeout_sec = -1;
|
||||||
attach_ctrlr_done, NULL, NULL, false, -1, 1, 0);
|
opts.reconnect_delay_sec = 1;
|
||||||
|
|
||||||
|
rc = bdev_nvme_create(&path.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
|
attach_ctrlr_done, NULL, NULL, &opts, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
@ -5404,8 +5420,8 @@ test_reconnect_ctrlr(void)
|
|||||||
nvme_ctrlr = nvme_ctrlr_get_by_name("nvme0");
|
nvme_ctrlr = nvme_ctrlr_get_by_name("nvme0");
|
||||||
SPDK_CU_ASSERT_FATAL(nvme_ctrlr != NULL);
|
SPDK_CU_ASSERT_FATAL(nvme_ctrlr != NULL);
|
||||||
|
|
||||||
nvme_ctrlr->ctrlr_loss_timeout_sec = 2;
|
nvme_ctrlr->opts.ctrlr_loss_timeout_sec = 2;
|
||||||
nvme_ctrlr->reconnect_delay_sec = 1;
|
nvme_ctrlr->opts.reconnect_delay_sec = 1;
|
||||||
|
|
||||||
ch1 = spdk_get_io_channel(nvme_ctrlr);
|
ch1 = spdk_get_io_channel(nvme_ctrlr);
|
||||||
SPDK_CU_ASSERT_FATAL(ch1 != NULL);
|
SPDK_CU_ASSERT_FATAL(ch1 != NULL);
|
||||||
@ -5550,8 +5566,8 @@ test_retry_failover_ctrlr(void)
|
|||||||
nvme_ctrlr = nvme_ctrlr_get_by_name("nvme0");
|
nvme_ctrlr = nvme_ctrlr_get_by_name("nvme0");
|
||||||
SPDK_CU_ASSERT_FATAL(nvme_ctrlr != NULL);
|
SPDK_CU_ASSERT_FATAL(nvme_ctrlr != NULL);
|
||||||
|
|
||||||
nvme_ctrlr->ctrlr_loss_timeout_sec = -1;
|
nvme_ctrlr->opts.ctrlr_loss_timeout_sec = -1;
|
||||||
nvme_ctrlr->reconnect_delay_sec = 1;
|
nvme_ctrlr->opts.reconnect_delay_sec = 1;
|
||||||
|
|
||||||
rc = bdev_nvme_add_secondary_trid(nvme_ctrlr, &ctrlr, &trid2);
|
rc = bdev_nvme_add_secondary_trid(nvme_ctrlr, &ctrlr, &trid2);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
@ -5641,6 +5657,7 @@ static void
|
|||||||
test_fail_path(void)
|
test_fail_path(void)
|
||||||
{
|
{
|
||||||
struct nvme_path_id path = {};
|
struct nvme_path_id path = {};
|
||||||
|
struct nvme_ctrlr_opts opts = {};
|
||||||
struct spdk_nvme_ctrlr *ctrlr;
|
struct spdk_nvme_ctrlr *ctrlr;
|
||||||
struct nvme_bdev_ctrlr *nbdev_ctrlr;
|
struct nvme_bdev_ctrlr *nbdev_ctrlr;
|
||||||
struct nvme_ctrlr *nvme_ctrlr;
|
struct nvme_ctrlr *nvme_ctrlr;
|
||||||
@ -5676,8 +5693,12 @@ test_fail_path(void)
|
|||||||
g_ut_attach_ctrlr_status = 0;
|
g_ut_attach_ctrlr_status = 0;
|
||||||
g_ut_attach_bdev_count = 1;
|
g_ut_attach_bdev_count = 1;
|
||||||
|
|
||||||
rc = bdev_nvme_create(&path.trid, "nvme0", attached_names, STRING_SIZE, 0,
|
opts.ctrlr_loss_timeout_sec = 4;
|
||||||
attach_ctrlr_done, NULL, NULL, false, 4, 1, 2);
|
opts.reconnect_delay_sec = 1;
|
||||||
|
opts.fast_io_fail_timeout_sec = 2;
|
||||||
|
|
||||||
|
rc = bdev_nvme_create(&path.trid, "nvme0", attached_names, STRING_SIZE,
|
||||||
|
attach_ctrlr_done, NULL, NULL, &opts, false);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
spdk_delay_us(1000);
|
spdk_delay_us(1000);
|
||||||
|
Loading…
Reference in New Issue
Block a user