bdev/nvme: io_complete_nvme_status() caches bio->io_path in local variable
The following patches will clear bio->io_path when the error is a network path error. As a preparation, cache bio->io_path to a local variable io_path. Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com> Change-Id: I0a25f4a70dd1064702b2037283bddd6e789dfae1 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16014 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
02acec4e26
commit
6fa7cf97d0
@ -1079,6 +1079,7 @@ bdev_nvme_io_complete_nvme_status(struct nvme_bdev_io *bio,
|
|||||||
{
|
{
|
||||||
struct spdk_bdev_io *bdev_io = spdk_bdev_io_from_ctx(bio);
|
struct spdk_bdev_io *bdev_io = spdk_bdev_io_from_ctx(bio);
|
||||||
struct nvme_bdev_channel *nbdev_ch;
|
struct nvme_bdev_channel *nbdev_ch;
|
||||||
|
struct nvme_io_path *io_path;
|
||||||
struct nvme_ctrlr *nvme_ctrlr;
|
struct nvme_ctrlr *nvme_ctrlr;
|
||||||
const struct spdk_nvme_ctrlr_data *cdata;
|
const struct spdk_nvme_ctrlr_data *cdata;
|
||||||
uint64_t delay_ms;
|
uint64_t delay_ms;
|
||||||
@ -1102,16 +1103,18 @@ bdev_nvme_io_complete_nvme_status(struct nvme_bdev_io *bio,
|
|||||||
nbdev_ch = spdk_io_channel_get_ctx(spdk_bdev_io_get_io_channel(bdev_io));
|
nbdev_ch = spdk_io_channel_get_ctx(spdk_bdev_io_get_io_channel(bdev_io));
|
||||||
|
|
||||||
assert(bio->io_path != NULL);
|
assert(bio->io_path != NULL);
|
||||||
nvme_ctrlr = bio->io_path->qpair->ctrlr;
|
io_path = bio->io_path;
|
||||||
|
|
||||||
|
nvme_ctrlr = io_path->qpair->ctrlr;
|
||||||
|
|
||||||
if (spdk_nvme_cpl_is_path_error(cpl) ||
|
if (spdk_nvme_cpl_is_path_error(cpl) ||
|
||||||
spdk_nvme_cpl_is_aborted_sq_deletion(cpl) ||
|
spdk_nvme_cpl_is_aborted_sq_deletion(cpl) ||
|
||||||
!nvme_io_path_is_available(bio->io_path) ||
|
!nvme_io_path_is_available(io_path) ||
|
||||||
!nvme_ctrlr_is_available(nvme_ctrlr)) {
|
!nvme_ctrlr_is_available(nvme_ctrlr)) {
|
||||||
nbdev_ch->current_io_path = NULL;
|
nbdev_ch->current_io_path = NULL;
|
||||||
if (spdk_nvme_cpl_is_ana_error(cpl)) {
|
if (spdk_nvme_cpl_is_ana_error(cpl)) {
|
||||||
if (nvme_ctrlr_read_ana_log_page(nvme_ctrlr) == 0) {
|
if (nvme_ctrlr_read_ana_log_page(nvme_ctrlr) == 0) {
|
||||||
bio->io_path->nvme_ns->ana_state_updating = true;
|
io_path->nvme_ns->ana_state_updating = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
delay_ms = 0;
|
delay_ms = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user