Blob Blame History Raw
From 74e25edb248a62e437cdc1b4aaa8a0f44c112880 Mon Sep 17 00:00:00 2001
From: Jerome Marchand <jmarchan@redhat.com>
Date: Mon, 10 Dec 2018 08:54:50 +0100
Subject: [PATCH] tools: prepare block tools for the removing of legacy I/O
 path (#2070)

Recent -next kernels don't have blk_start_request() function
anymore. It has been removed in a recent cleanup. bio* tools should be
able to handle the lack of this probe.
---
 tools/biolatency.py | 3 ++-
 tools/biosnoop.py   | 3 ++-
 tools/biotop.py     | 3 ++-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/tools/biolatency.py b/tools/biolatency.py
index 3879af1..68aa577 100755
--- a/tools/biolatency.py
+++ b/tools/biolatency.py
@@ -116,7 +116,8 @@ b = BPF(text=bpf_text)
 if args.queued:
     b.attach_kprobe(event="blk_account_io_start", fn_name="trace_req_start")
 else:
-    b.attach_kprobe(event="blk_start_request", fn_name="trace_req_start")
+    if BPF.get_kprobe_functions(b'blk_start_request'):
+        b.attach_kprobe(event="blk_start_request", fn_name="trace_req_start")
     b.attach_kprobe(event="blk_mq_start_request", fn_name="trace_req_start")
 b.attach_kprobe(event="blk_account_io_completion",
     fn_name="trace_req_completion")
diff --git a/tools/biosnoop.py b/tools/biosnoop.py
index 2b1e77d..d036c0b 100755
--- a/tools/biosnoop.py
+++ b/tools/biosnoop.py
@@ -122,7 +122,8 @@ int trace_req_completion(struct pt_regs *ctx, struct request *req)
 }
 """, debug=0)
 b.attach_kprobe(event="blk_account_io_start", fn_name="trace_pid_start")
-b.attach_kprobe(event="blk_start_request", fn_name="trace_req_start")
+if BPF.get_kprobe_functions(b'blk_start_request'):
+    b.attach_kprobe(event="blk_start_request", fn_name="trace_req_start")
 b.attach_kprobe(event="blk_mq_start_request", fn_name="trace_req_start")
 b.attach_kprobe(event="blk_account_io_completion",
     fn_name="trace_req_completion")
diff --git a/tools/biotop.py b/tools/biotop.py
index c6e1ca2..b2b5089 100755
--- a/tools/biotop.py
+++ b/tools/biotop.py
@@ -173,7 +173,8 @@ int trace_req_completion(struct pt_regs *ctx, struct request *req)
 
 b = BPF(text=bpf_text)
 b.attach_kprobe(event="blk_account_io_start", fn_name="trace_pid_start")
-b.attach_kprobe(event="blk_start_request", fn_name="trace_req_start")
+if BPF.get_kprobe_functions(b'blk_start_request'):
+    b.attach_kprobe(event="blk_start_request", fn_name="trace_req_start")
 b.attach_kprobe(event="blk_mq_start_request", fn_name="trace_req_start")
 b.attach_kprobe(event="blk_account_io_completion",
     fn_name="trace_req_completion")
-- 
2.19.2