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 <shuhei.matsumoto.xt@hitachi.com> Change-Id: Iacec2eadc9e56ae7b84ee3c313c8986f55983a08 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5535 Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
This commit is contained in:
parent
4956435757
commit
f4f3fe37ec
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user