ANDROID: mm: add vendor hook for page_cache_readahead and filemap_fault
Add a vendor hook for start/end of page_cache_readahead and filemap_fault. Bug: 351175506 Change-Id: Ie00ff34d48db7ef85520576af8986c95d841112e Signed-off-by: Sooyong Suk <s.suk@samsung.corp-partner.google.com>
This commit is contained in:
committed by
Suren Baghdasaryan
parent
c4535caded
commit
ce2b5c7bca
@@ -341,3 +341,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_read_fault);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_filemap_read);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_filemap_map_pages);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_try_alloc_pages_gfp);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_page_cache_readahead_start);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_page_cache_readahead_end);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_filemap_fault_start);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_filemap_fault_end);
|
||||
|
||||
@@ -231,6 +231,19 @@ DECLARE_HOOK(android_vh_filemap_map_pages,
|
||||
TP_PROTO(struct file *file, pgoff_t first_pgoff,
|
||||
pgoff_t last_pgoff, vm_fault_t ret),
|
||||
TP_ARGS(file, first_pgoff, last_pgoff, ret));
|
||||
DECLARE_HOOK(android_vh_page_cache_readahead_start,
|
||||
TP_PROTO(struct file *file, pgoff_t pgoff,
|
||||
unsigned int size, bool sync),
|
||||
TP_ARGS(file, pgoff, size, sync));
|
||||
DECLARE_HOOK(android_vh_page_cache_readahead_end,
|
||||
TP_PROTO(struct file *file, pgoff_t pgoff),
|
||||
TP_ARGS(file, pgoff));
|
||||
DECLARE_HOOK(android_vh_filemap_fault_start,
|
||||
TP_PROTO(struct file *file, pgoff_t pgoff),
|
||||
TP_ARGS(file, pgoff));
|
||||
DECLARE_HOOK(android_vh_filemap_fault_end,
|
||||
TP_PROTO(struct file *file, pgoff_t pgoff),
|
||||
TP_ARGS(file, pgoff));
|
||||
#endif /* _TRACE_HOOK_MM_H */
|
||||
|
||||
/* This part must be outside protection */
|
||||
|
||||
@@ -3190,7 +3190,10 @@ static struct file *do_sync_mmap_readahead(struct vm_fault *vmf)
|
||||
|
||||
if (vm_flags & VM_SEQ_READ) {
|
||||
fpin = maybe_unlock_mmap_for_io(vmf, fpin);
|
||||
trace_android_vh_page_cache_readahead_start(file, vmf->pgoff,
|
||||
ra->ra_pages, true);
|
||||
page_cache_sync_ra(&ractl, ra->ra_pages);
|
||||
trace_android_vh_page_cache_readahead_end(file, vmf->pgoff);
|
||||
return fpin;
|
||||
}
|
||||
|
||||
@@ -3214,7 +3217,10 @@ static struct file *do_sync_mmap_readahead(struct vm_fault *vmf)
|
||||
ra->size = ra->ra_pages;
|
||||
ra->async_size = ra->ra_pages / 4;
|
||||
ractl._index = ra->start;
|
||||
trace_android_vh_page_cache_readahead_start(file, vmf->pgoff,
|
||||
ra->size, true);
|
||||
page_cache_ra_order(&ractl, ra, 0);
|
||||
trace_android_vh_page_cache_readahead_end(file, vmf->pgoff);
|
||||
return fpin;
|
||||
}
|
||||
|
||||
@@ -3242,7 +3248,10 @@ static struct file *do_async_mmap_readahead(struct vm_fault *vmf,
|
||||
|
||||
if (folio_test_readahead(folio)) {
|
||||
fpin = maybe_unlock_mmap_for_io(vmf, fpin);
|
||||
trace_android_vh_page_cache_readahead_start(file, vmf->pgoff,
|
||||
ra->ra_pages, false);
|
||||
page_cache_async_ra(&ractl, folio, ra->ra_pages);
|
||||
trace_android_vh_page_cache_readahead_end(file, vmf->pgoff);
|
||||
}
|
||||
return fpin;
|
||||
}
|
||||
@@ -3447,7 +3456,9 @@ page_not_uptodate:
|
||||
* and we need to check for errors.
|
||||
*/
|
||||
fpin = maybe_unlock_mmap_for_io(vmf, fpin);
|
||||
trace_android_vh_filemap_fault_start(file, vmf->pgoff);
|
||||
error = filemap_read_folio(file, mapping->a_ops->read_folio, folio);
|
||||
trace_android_vh_filemap_fault_end(file, vmf->pgoff);
|
||||
if (fpin)
|
||||
goto out_retry;
|
||||
folio_put(folio);
|
||||
|
||||
Reference in New Issue
Block a user