From f4f3fe37ecf6fdd812c11711e0f1671b2828e8ce Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Thu, 10 Dec 2020 09:44:34 +0900 Subject: [PATCH] bdev/ocssd: Pass range and geometry directly to translate_lba() When the NVMe bdev module supports ANA multipath, struct nvme_bdev will not have nvme_bdev_ns pointer directly and will get via nvme_bdev_subsystem. The patch series starting from this patch will change helper functions to get both ocssd_bdev and ocssd_ns as parameters to make the upcoming changes easier. Signed-off-by: Shuhei Matsumoto Change-Id: Iacec2eadc9e56ae7b84ee3c313c8986f55983a08 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5535 Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins Reviewed-by: Changpeng Liu Reviewed-by: Aleksey Marchuk --- module/bdev/nvme/bdev_ocssd.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/module/bdev/nvme/bdev_ocssd.c b/module/bdev/nvme/bdev_ocssd.c index 4122d8bd9..7c06325a6 100644 --- a/module/bdev/nvme/bdev_ocssd.c +++ b/module/bdev/nvme/bdev_ocssd.c @@ -255,12 +255,10 @@ bdev_ocssd_num_parallel_units(const struct ocssd_bdev *ocssd_bdev) } static void -bdev_ocssd_translate_lba(struct ocssd_bdev *ocssd_bdev, uint64_t lba, uint64_t *grp, - uint64_t *pu, uint64_t *chk, uint64_t *lbk) +bdev_ocssd_translate_lba(const struct bdev_ocssd_range *range, + const struct spdk_ocssd_geometry_data *geo, uint64_t lba, + uint64_t *grp, uint64_t *pu, uint64_t *chk, uint64_t *lbk) { - struct bdev_ocssd_ns *ocssd_ns = bdev_ocssd_get_ns_from_bdev(ocssd_bdev); - const struct spdk_ocssd_geometry_data *geo = &ocssd_ns->geometry; - const struct bdev_ocssd_range *range = &ocssd_bdev->range; uint64_t addr_shift, punit; /* To achieve best performance, we need to make sure that adjacent zones can be accessed @@ -323,7 +321,8 @@ bdev_ocssd_to_disk_lba(struct ocssd_bdev *ocssd_bdev, uint64_t lba) const struct bdev_ocssd_lba_offsets *offsets = &ocssd_ns->lba_offsets; uint64_t lbk, chk, pu, grp; - bdev_ocssd_translate_lba(ocssd_bdev, lba, &grp, &pu, &chk, &lbk); + bdev_ocssd_translate_lba(&ocssd_bdev->range, &ocssd_ns->geometry, lba, + &grp, &pu, &chk, &lbk); return (lbk << offsets->lbk) | (chk << offsets->chk) | @@ -338,7 +337,7 @@ bdev_ocssd_to_chunk_info_offset(struct ocssd_bdev *ocssd_bdev, uint64_t lba) const struct spdk_ocssd_geometry_data *geo = &ocssd_ns->geometry; uint64_t grp, pu, chk, lbk; - bdev_ocssd_translate_lba(ocssd_bdev, lba, &grp, &pu, &chk, &lbk); + bdev_ocssd_translate_lba(&ocssd_bdev->range, geo, lba, &grp, &pu, &chk, &lbk); return grp * geo->num_pu * geo->num_chk + pu * geo->num_chk + chk; }