HomeFreeBSD

Refactor dmu_prefetch().

Description

Refactor dmu_prefetch().

  • Split dmu_prefetch_dnode() from dmu_prefetch() into a separate

function. It is quite inconvenient to read the code where len = 0
means dnode prefetch instead indirect/data prefetch. One function
doing both has no benefits, since the code paths are independent.

  • Improve dmu_prefetch() handling of long block ranges. Instead

of limiting L0 data length to prefetch for to dmu_prefetch_max,
make dmu_prefetch_max limit the actual amount of prefetch at the
specified level, and, if there is more, prefetch all the rest at
higher indirection level. It should improve random access times
within the prefetched range of any length, reducing importance of
specific dmu_prefetch_max value.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Alexander Motin <mav@FreeBSD.org>
Sponsored by: iXsystems, Inc.
Closes #15076

Details

Provenance
mavAuthored on Aug 7 2023, 8:54 PM
GitHub <noreply@github.com>Committed on Aug 7 2023, 8:54 PM
Parents
rGa97b8fc2dd9e: Fix some typos
Branches
Unknown
Tags
Unknown

Event Timeline