lib/ftl: Avoid splitting read's in case contiguous PPAs
Change-Id: I026902096686da37c0ca7086bb5d91b35d90ffa6 Signed-off-by: Wojciech Malikowski <wojciech.malikowski@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/447340 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com> Reviewed-by: Young Tack Jin <youngtack.jin@circuitblvd.com> Reviewed-by: Claire Jihyun In <claire.in@circuitblvd.com>
This commit is contained in:
parent
07a05093a8
commit
cfdc60c05a
@ -784,9 +784,10 @@ ftl_lba_read_next_ppa(struct ftl_io *io, struct ftl_ppa *ppa,
|
|||||||
size_t lbk, void *ctx)
|
size_t lbk, void *ctx)
|
||||||
{
|
{
|
||||||
struct spdk_ftl_dev *dev = io->dev;
|
struct spdk_ftl_dev *dev = io->dev;
|
||||||
*ppa = ftl_l2p_get(dev, io->lba + lbk);
|
struct ftl_ppa next_ppa;
|
||||||
|
size_t i;
|
||||||
|
|
||||||
(void) ctx;
|
*ppa = ftl_l2p_get(dev, io->lba + lbk);
|
||||||
|
|
||||||
SPDK_DEBUGLOG(SPDK_LOG_FTL_CORE, "Read ppa:%lx, lba:%lu\n", ppa->ppa, io->lba);
|
SPDK_DEBUGLOG(SPDK_LOG_FTL_CORE, "Read ppa:%lx, lba:%lu\n", ppa->ppa, io->lba);
|
||||||
|
|
||||||
@ -806,8 +807,19 @@ ftl_lba_read_next_ppa(struct ftl_io *io, struct ftl_ppa *ppa,
|
|||||||
return -EAGAIN;
|
return -EAGAIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We want to read one lbk at a time */
|
for (i = 1; i < ftl_io_iovec_len_left(io); ++i) {
|
||||||
return 1;
|
next_ppa = ftl_l2p_get(dev, io->lba + lbk + i);
|
||||||
|
|
||||||
|
if (ftl_ppa_invalid(next_ppa) || ftl_ppa_cached(next_ppa)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ftl_ppa_addr_pack(dev, *ppa) + i != ftl_ppa_addr_pack(dev, next_ppa)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
Reference in New Issue
Block a user