From 66245eed5829cc4260b3780242969327e554efc3 Mon Sep 17 00:00:00 2001 From: Wang Jianzheng <11134417@vivo.corp-partner.google.com> Date: Fri, 7 Jun 2024 12:05:09 +0800 Subject: [PATCH] ANDROID: vendor_hooks: add vendor hooks for bd_link_disk_holder Add a vendor hook for bd_link_disk_holder. It is proposed to modify the oem_data in the struct gendisk to store a pointer. It will help us to use our customized scheduler hook. Bug: 345603555 Bug: 407947364 Change-Id: Ibf877dcda76da6a2a1924fcc98e6ec1b51997627 Signed-off-by: Wang Jianzheng <11134417@vivo.corp-partner.google.com> (cherry picked from commit dbe0e69e89f5b0ad11368ecbe35572e87d49aac0) Signed-off-by: ying zuxin <11154159@vivo.com> --- block/holder.c | 2 ++ drivers/android/vendor_hooks.c | 3 ++- include/trace/hooks/blk.h | 22 ++++++++++++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 include/trace/hooks/blk.h diff --git a/block/holder.c b/block/holder.c index 791091a7eac2..eed1fd063306 100644 --- a/block/holder.c +++ b/block/holder.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-only #include #include +#include struct bd_holder_disk { struct list_head list; @@ -109,6 +110,7 @@ int bd_link_disk_holder(struct block_device *bdev, struct gendisk *disk) if (ret) goto out_del_symlink; list_add(&holder->list, &disk->slave_bdevs); + trace_android_vh_bd_link_disk_holder(bdev, disk); mutex_unlock(&blk_holder_mutex); return 0; diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 76d84fd7dddc..73eb1c342733 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -68,7 +68,7 @@ #include #include #include - +#include /* * Export tracepoints that act as a bare tracehook (ie: have no trace event @@ -448,3 +448,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_kcompactd_cpu_online); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_direct_reclaim_begin); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_direct_reclaim_end); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_read_fault); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_bd_link_disk_holder); diff --git a/include/trace/hooks/blk.h b/include/trace/hooks/blk.h new file mode 100644 index 000000000000..04ee035543e5 --- /dev/null +++ b/include/trace/hooks/blk.h @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM blk + +#undef TRACE_INCLUDE_PATH +#define TRACE_INCLUDE_PATH trace/hooks + +#if !defined(_TRACE_HOOK_BLK_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_HOOK_BLK_H + +#include + +struct block_device; +struct gendisk; + +DECLARE_HOOK(android_vh_bd_link_disk_holder, + TP_PROTO(struct block_device *bdev, struct gendisk *disk), + TP_ARGS(bdev, disk)); + +#endif /* _TRACE_HOOK_BLK_H */ +/* This part must be outside protection */ +#include