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