From 205d32456b85c7a59d379f77bd381a2fe05ca490 Mon Sep 17 00:00:00 2001 From: Wang Jianzheng <11134417@vivo.corp-partner.google.com> Date: Thu, 23 May 2024 20:44:35 +0800 Subject: [PATCH] ANDROID: vendor_hooks: add vendor hooks for readahead bio Different scenarios may require different readahead parameters and readahead mechanisms, such as application start-up or game loading. Add vendor hook to f2fs_read_single_page, so we can modify some bio flags according to the struct readahead_control. Bug: 342340767 Bug: 415852476 Change-Id: I0665c4bdec945808860b73217cc0d128f49c2eb7 Signed-off-by: Wang Jianzheng <11134417@vivo.corp-partner.google.com> (cherry picked from commit d2a7ba068de10173fffaa2a7288991429d44d031) Signed-off-by: ying zuxin <11154159@vivo.com> --- drivers/android/vendor_hooks.c | 1 + fs/f2fs/data.c | 6 +++++- include/trace/hooks/blk.h | 7 +++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 3364a94d1c63..e716d9f253d9 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -517,6 +517,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_init_adjust_zone_wmark); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_lock_folio_drop_mmap_start); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_lock_folio_drop_mmap_end); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_filemap_update_page); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_f2fs_ra_op_flags); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_hibernated_do_mem_alloc); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_hibernate_save_cmp_len); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_percpu_rwsem_down_read); diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index e573cc30dc55..06b29afba9f2 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -27,6 +27,7 @@ #include "segment.h" #include "iostat.h" #include +#include #define NUM_PREALLOC_POST_READ_CTXS 128 @@ -2069,7 +2070,10 @@ static inline loff_t f2fs_readpage_limit(struct inode *inode) static inline blk_opf_t f2fs_ra_op_flags(struct readahead_control *rac) { - return rac ? REQ_RAHEAD : 0; + blk_opf_t op_flag = rac ? REQ_RAHEAD : 0; + + trace_android_vh_f2fs_ra_op_flags(&op_flag, rac); + return op_flag; } static int f2fs_read_single_page(struct inode *inode, struct folio *folio, diff --git a/include/trace/hooks/blk.h b/include/trace/hooks/blk.h index 17f8ce4bf183..5bf95019bbaa 100644 --- a/include/trace/hooks/blk.h +++ b/include/trace/hooks/blk.h @@ -35,6 +35,13 @@ DECLARE_HOOK(android_vh_blk_mq_kick_requeue_list, TP_PROTO(struct request_queue *q, unsigned long delay, bool *skip), TP_ARGS(q, delay, skip)); +struct readahead_control; +typedef __u32 __bitwise blk_opf_t; + +DECLARE_HOOK(android_vh_f2fs_ra_op_flags, + TP_PROTO(blk_opf_t *op_flag, struct readahead_control *rac), + TP_ARGS(op_flag, rac)); + #endif /* _TRACE_HOOK_BLK_H */ /* This part must be outside protection */ #include