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)
|
||||
{
|
||||
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);
|
||||
|
||||
@ -806,8 +807,19 @@ ftl_lba_read_next_ppa(struct ftl_io *io, struct ftl_ppa *ppa,
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
/* We want to read one lbk at a time */
|
||||
return 1;
|
||||
for (i = 1; i < ftl_io_iovec_len_left(io); ++i) {
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user