ANDROID: vendor_hooks: Add hook to precisely control readahead

Add vendor hooks to precisely control readahead based on various
factors, such as filesystem type, file type, process priority, and
other considerations.

Bug: 387208968
Bug: 415915027
Change-Id: I3016c5e0da487ae03b760dce4f6dbc0d90f145b3
Signed-off-by: Yang Yang <yang.yang@vivo.com>
(cherry picked from commit d005368a82ecc5b4f7e04d9df7d007ef384bcd2f)
Signed-off-by: ying zuxin <11154159@vivo.com>
This commit is contained in:
Yang Yang
2024-12-30 18:48:28 +08:00
committed by Sandeep Dhavale
parent 2b9ccc455b
commit 575d29316a
3 changed files with 11 additions and 0 deletions

View File

@@ -384,6 +384,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_fuse_request_send);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_fuse_request_end);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_lruvec_add_folio);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_lruvec_del_folio);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_async_mmap_readahead);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_sock_error);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_fastsyn);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_state_change);

View File

@@ -323,6 +323,11 @@ DECLARE_HOOK(android_vh_alloc_pages_slowpath_end,
DECLARE_HOOK(android_vh_add_lazyfree_bypass,
TP_PROTO(struct lruvec *lruvec, struct folio *folio, bool *bypass),
TP_ARGS(lruvec, folio, bypass));
DECLARE_HOOK(android_vh_do_async_mmap_readahead,
TP_PROTO(struct vm_fault *vmf, struct folio *folio, bool *skip),
TP_ARGS(vmf, folio, skip));
DECLARE_HOOK(android_vh_alloc_contig_range_not_isolated,
TP_PROTO(unsigned long start, unsigned end),
TP_ARGS(start, end));

View File

@@ -3271,6 +3271,11 @@ static struct file *do_async_mmap_readahead(struct vm_fault *vmf,
DEFINE_READAHEAD(ractl, file, ra, file->f_mapping, vmf->pgoff);
struct file *fpin = NULL;
unsigned int mmap_miss;
bool skip = false;
trace_android_vh_do_async_mmap_readahead(vmf, folio, &skip);
if (skip)
return fpin;
/* If we don't want any read-ahead, don't bother */
if (vmf->vma->vm_flags & VM_RAND_READ || !ra->ra_pages)