Commit 7083fa3e authored by Wojciech Malikowski's avatar Wojciech Malikowski Committed by Tomasz Zawadzki
Browse files

lib/ftl: Remove group from ftl physical address



ftl_ppa address do not need to expose group
information when FTL will move to zones API.

Change-Id: Iece1b32f9bcd8985260668c953089eb9951f13cc
Signed-off-by: default avatarWojciech Malikowski <wojciech.malikowski@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/467603


Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarMateusz Kozlowski <mateusz.kozlowski@intel.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
parent 70db9e5c
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -407,7 +407,6 @@ ftl_band_tail_md_ppa(struct ftl_band *band)
	ppa.lbk = (num_req / band->num_zones) * xfer_size;
	ppa.chk = band->id;
	ppa.pu = zone->punit->start_ppa.pu;
	ppa.grp = zone->punit->start_ppa.grp;

	return ppa;
}
@@ -589,7 +588,6 @@ ftl_band_next_xfer_ppa(struct ftl_band *band, struct ftl_ppa ppa, size_t num_lbk

		zone = ftl_band_next_operational_zone(band, zone);
		assert(zone);
		ppa.grp = zone->start_ppa.grp;
		ppa.pu = zone->start_ppa.pu;

		num_lbks -= dev->xfer_size;
@@ -639,8 +637,7 @@ ftl_band_ppa_from_lbkoff(struct ftl_band *band, uint64_t lbkoff)

	ppa.lbk = lbkoff % ftl_dev_lbks_in_zone(dev);
	ppa.chk = band->id;
	ppa.pu = punit / dev->geo.num_grp;
	ppa.grp = punit % dev->geo.num_grp;
	ppa.pu = punit;

	return ppa;
}
+2 −2
Original line number Diff line number Diff line
@@ -585,8 +585,8 @@ ftl_wptr_advance(struct ftl_wptr *wptr, size_t xfer_size)

	assert(!ftl_ppa_invalid(wptr->ppa));

	SPDK_DEBUGLOG(SPDK_LOG_FTL_CORE, "wptr: grp:%d, pu:%d zone:%d, lbk:%u\n",
		      wptr->ppa.grp, wptr->ppa.pu, wptr->ppa.chk, wptr->ppa.lbk);
	SPDK_DEBUGLOG(SPDK_LOG_FTL_CORE, "wptr: pu:%d zone:%d, lbk:%u\n",
		      wptr->ppa.pu, wptr->ppa.chk, wptr->ppa.lbk);

	if (wptr->offset >= next_thld && !dev->next_band) {
		dev->next_band = ftl_next_write_band(dev);
+8 −8
Original line number Diff line number Diff line
@@ -358,8 +358,8 @@ ftl_ppa_addr_pack(const struct spdk_ftl_dev *dev, struct ftl_ppa ppa)

	lbk = ppa.lbk;
	chk = ppa.chk;
	pu = ppa.pu;
	grp = ppa.grp;
	pu = ppa.pu / dev->geo.num_grp;
	grp = ppa.pu % dev->geo.num_grp;

	return (lbk << dev->ppaf.lbk_offset) |
	       (chk << dev->ppaf.chk_offset) |
@@ -371,11 +371,13 @@ static inline struct ftl_ppa
ftl_ppa_addr_unpack(const struct spdk_ftl_dev *dev, uint64_t ppa)
{
	struct ftl_ppa res = {};
	unsigned int pu, grp;

	res.lbk = (ppa >> dev->ppaf.lbk_offset) & dev->ppaf.lbk_mask;
	res.chk = (ppa >> dev->ppaf.chk_offset) & dev->ppaf.chk_mask;
	res.pu  = (ppa >> dev->ppaf.pu_offset)  & dev->ppaf.pu_mask;
	res.grp = (ppa >> dev->ppaf.grp_offset) & dev->ppaf.grp_mask;
	pu  = (ppa >> dev->ppaf.pu_offset)  & dev->ppaf.pu_mask;
	grp = (ppa >> dev->ppaf.grp_offset) & dev->ppaf.grp_mask;
	res.pu = grp * dev->geo.num_pu + pu;

	return res;
}
@@ -417,15 +419,13 @@ ftl_ppa_from_packed(const struct spdk_ftl_dev *dev, struct ftl_ppa p)
static inline unsigned int
ftl_ppa_flatten_punit(const struct spdk_ftl_dev *dev, struct ftl_ppa ppa)
{
	return ppa.pu * dev->geo.num_grp + ppa.grp - dev->range.begin;
	return ppa.pu - dev->range.begin;
}

static inline int
ftl_ppa_in_range(const struct spdk_ftl_dev *dev, struct ftl_ppa ppa)
{
	unsigned int punit = ftl_ppa_flatten_punit(dev, ppa) + dev->range.begin;

	if (punit >= dev->range.begin && punit <= dev->range.end) {
	if (ppa.pu >= dev->range.begin && ppa.pu <= dev->range.end) {
		return 1;
	}

+2 −2
Original line number Diff line number Diff line
@@ -53,8 +53,8 @@
static inline const char *
ftl_ppa2str(struct ftl_ppa ppa, char *buf, size_t size)
{
	snprintf(buf, size, "(grp: %u, pu: %u, chk: %u, lbk: %u)",
		 ppa.grp, ppa.pu, ppa.chk, ppa.lbk);
	snprintf(buf, size, "(pu: %u, chk: %u, lbk: %u)",
		 ppa.pu, ppa.chk, ppa.lbk);
	return buf;
}

+4 −3
Original line number Diff line number Diff line
@@ -209,7 +209,9 @@ ftl_retrieve_chunk_info(struct spdk_ftl_dev *dev, struct ftl_ppa ppa,
{
	volatile struct ftl_admin_cmpl cmpl = {};
	uint32_t nsid = spdk_nvme_ns_get_id(dev->ns);
	uint64_t offset = (ppa.grp * dev->geo.num_pu + ppa.pu) *
	unsigned int grp = ppa.pu % dev->geo.num_grp;
	unsigned int punit = ppa.pu / dev->geo.num_grp;
	uint64_t offset = (grp * dev->geo.num_pu + punit) *
			  dev->geo.num_chk + ppa.chk;
	int rc;

@@ -411,8 +413,7 @@ ftl_dev_init_punits(struct spdk_ftl_dev *dev)
		punit = dev->range.begin + i;

		dev->punits[i].start_ppa.ppa = 0;
		dev->punits[i].start_ppa.grp = punit % dev->geo.num_grp;
		dev->punits[i].start_ppa.pu = punit / dev->geo.num_grp;
		dev->punits[i].start_ppa.pu = punit;
	}

	return 0;
Loading