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
Brian Behlendorf <behlendorf1@llnl.gov>Committed on Apr 19 2024, 5:13 PM
Parents
rG3b8817db9607: ZIL: Update Linux tracing after #15635
Branches
Unknown
Tags
Unknown