diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 1af7dedd6a5a..3fc7871c725c 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -154,6 +154,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_freq_qos_update_request); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_freq_qos_remove_request); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_balance_anon_file_reclaim); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_show_max_freq); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_dm_bufio_shrink_scan_bypass); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cleanup_old_buffers_bypass); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_avc_insert); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_avc_node_delete); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_avc_node_replace); diff --git a/drivers/md/dm-bufio.c b/drivers/md/dm-bufio.c index 382c5cc47195..45b09be3d86b 100644 --- a/drivers/md/dm-bufio.c +++ b/drivers/md/dm-bufio.c @@ -20,6 +20,8 @@ #include #include +#include + #define DM_MSG_PREFIX "bufio" /* @@ -1702,6 +1704,13 @@ static void shrink_work(struct work_struct *w) static unsigned long dm_bufio_shrink_scan(struct shrinker *shrink, struct shrink_control *sc) { struct dm_bufio_client *c; + bool bypass = false; + + trace_android_vh_dm_bufio_shrink_scan_bypass( + dm_bufio_current_allocated, + &bypass); + if (bypass) + return 0; c = container_of(shrink, struct dm_bufio_client, shrinker); atomic_long_add(sc->nr_to_scan, &c->need_shrink); @@ -2040,6 +2049,14 @@ static void cleanup_old_buffers(void) { unsigned long max_age_hz = get_max_age_hz(); struct dm_bufio_client *c; + bool bypass = false; + + trace_android_vh_cleanup_old_buffers_bypass( + dm_bufio_current_allocated, + &max_age_hz, + &bypass); + if (bypass) + return; mutex_lock(&dm_bufio_clients_lock); diff --git a/include/trace/hooks/mm.h b/include/trace/hooks/mm.h index df186e55a5b9..59867df7b0e9 100644 --- a/include/trace/hooks/mm.h +++ b/include/trace/hooks/mm.h @@ -23,6 +23,14 @@ DECLARE_RESTRICTED_HOOK(android_rvh_set_gfp_zone_flags, DECLARE_RESTRICTED_HOOK(android_rvh_set_readahead_gfp_mask, TP_PROTO(unsigned int *flags), /* gfp_t *flags */ TP_ARGS(flags), 1); +DECLARE_HOOK(android_vh_dm_bufio_shrink_scan_bypass, + TP_PROTO(unsigned long dm_bufio_current_allocated, bool *bypass), + TP_ARGS(dm_bufio_current_allocated, bypass)); +DECLARE_HOOK(android_vh_cleanup_old_buffers_bypass, + TP_PROTO(unsigned long dm_bufio_current_allocated, + unsigned long *max_age_hz, + bool *bypass), + TP_ARGS(dm_bufio_current_allocated, max_age_hz, bypass)); DECLARE_HOOK(android_vh_mmap_region, TP_PROTO(struct vm_area_struct *vma, unsigned long addr), TP_ARGS(vma, addr));