From 4f33deb89c463d392ef8f0e5c5b94673b2528089 Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Mon, 9 Jan 2023 22:14:58 +0900 Subject: [PATCH] bdev/nvme: Cache non-optimized path for active/active policy Non-optimized path was not cached for active/active policy unexpectedly. Fix the bug in this patch. This will simplify the code and will be helpful to add more algorithms a little. Signed-off-by: Shuhei Matsumoto Change-Id: I233d9fa6eca73b1e0fb850c7ea4b3474aff6fc1d Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16190 Tested-by: SPDK CI Jenkins Reviewed-by: Aleksey Marchuk Reviewed-by: Jim Harris Reviewed-by: Richael --- module/bdev/nvme/bdev_nvme.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/module/bdev/nvme/bdev_nvme.c b/module/bdev/nvme/bdev_nvme.c index e7f6f57b1..28a7c2446 100644 --- a/module/bdev/nvme/bdev_nvme.c +++ b/module/bdev/nvme/bdev_nvme.c @@ -876,15 +876,12 @@ _bdev_nvme_find_io_path(struct nvme_bdev_channel *nbdev_ch) static inline struct nvme_io_path * bdev_nvme_find_io_path(struct nvme_bdev_channel *nbdev_ch) { - if (spdk_unlikely(nbdev_ch->current_io_path == NULL)) { - return _bdev_nvme_find_io_path(nbdev_ch); + if (spdk_likely(nbdev_ch->current_io_path != NULL && + nbdev_ch->mp_policy == BDEV_NVME_MP_POLICY_ACTIVE_PASSIVE)) { + return nbdev_ch->current_io_path; } - if (spdk_likely(nbdev_ch->mp_policy == BDEV_NVME_MP_POLICY_ACTIVE_PASSIVE)) { - return nbdev_ch->current_io_path; - } else { - return _bdev_nvme_find_io_path(nbdev_ch); - } + return _bdev_nvme_find_io_path(nbdev_ch); } /* Return true if there is any io_path whose qpair is active or ctrlr is not failed,