zfs tools fix for zpl_read/zpl_write removal
authorMarcin Skarbek <git@skarbek.name>
Mon, 28 Aug 2017 15:39:50 +0000 (17:39 +0200)
committerMarcin Skarbek <git@skarbek.name>
Mon, 28 Aug 2017 15:39:50 +0000 (17:39 +0200)
tools/zfsdist.py
tools/zfsslower.py

index 2d9ae21..9c6d3e0 100755 (executable)
@@ -133,12 +133,26 @@ if debug:
 b = BPF(text=bpf_text)
 
 # common file functions
-b.attach_kprobe(event="zpl_read", fn_name="trace_entry")
-b.attach_kprobe(event="zpl_write", fn_name="trace_entry")
+if BPF.get_kprobe_functions('zpl_iter'):
+    b.attach_kprobe(event="zpl_iter_read", fn_name="trace_entry")
+    b.attach_kprobe(event="zpl_iter_write", fn_name="trace_entry")
+elif BPF.get_kprobe_functions('zpl_aio'):
+    b.attach_kprobe(event="zpl_aio_read", fn_name="trace_entry")
+    b.attach_kprobe(event="zpl_aio_write", fn_name="trace_entry")
+else:
+    b.attach_kprobe(event="zpl_read", fn_name="trace_entry")
+    b.attach_kprobe(event="zpl_write", fn_name="trace_entry")
 b.attach_kprobe(event="zpl_open", fn_name="trace_entry")
 b.attach_kprobe(event="zpl_fsync", fn_name="trace_entry")
-b.attach_kretprobe(event="zpl_read", fn_name="trace_read_return")
-b.attach_kretprobe(event="zpl_write", fn_name="trace_write_return")
+if BPF.get_kprobe_functions('zpl_iter'):
+    b.attach_kretprobe(event="zpl_iter_read", fn_name="trace_read_return")
+    b.attach_kretprobe(event="zpl_iter_write", fn_name="trace_write_return")
+elif BPF.get_kprobe_functions('zpl_aio'):
+    b.attach_kretprobe(event="zpl_aio_read", fn_name="trace_read_return")
+    b.attach_kretprobe(event="zpl_aio_write", fn_name="trace_write_return")
+else:
+    b.attach_kretprobe(event="zpl_read", fn_name="trace_read_return")
+    b.attach_kretprobe(event="zpl_write", fn_name="trace_write_return")
 b.attach_kretprobe(event="zpl_open", fn_name="trace_open_return")
 b.attach_kretprobe(event="zpl_fsync", fn_name="trace_fsync_return")
 
index f5e8cbb..1e61de7 100755 (executable)
@@ -276,12 +276,26 @@ def print_event(cpu, data, size):
 b = BPF(text=bpf_text)
 
 # common file functions
-b.attach_kprobe(event="zpl_read", fn_name="trace_rw_entry")
-b.attach_kprobe(event="zpl_write", fn_name="trace_rw_entry")
+if BPF.get_kprobe_functions('zpl_iter'):
+    b.attach_kprobe(event="zpl_iter_read", fn_name="trace_rw_entry")
+    b.attach_kprobe(event="zpl_iter_write", fn_name="trace_rw_entry")
+elif BPF.get_kprobe_functions('zpl_aio'):
+    b.attach_kprobe(event="zpl_aio_read", fn_name="trace_rw_entry")
+    b.attach_kprobe(event="zpl_aio_write", fn_name="trace_rw_entry")
+else:
+    b.attach_kprobe(event="zpl_read", fn_name="trace_rw_entry")
+    b.attach_kprobe(event="zpl_write", fn_name="trace_rw_entry")
 b.attach_kprobe(event="zpl_open", fn_name="trace_open_entry")
 b.attach_kprobe(event="zpl_fsync", fn_name="trace_fsync_entry")
-b.attach_kretprobe(event="zpl_read", fn_name="trace_read_return")
-b.attach_kretprobe(event="zpl_write", fn_name="trace_write_return")
+if BPF.get_kprobe_functions('zpl_iter'):
+    b.attach_kretprobe(event="zpl_iter_read", fn_name="trace_read_return")
+    b.attach_kretprobe(event="zpl_iter_write", fn_name="trace_write_return")
+elif BPF.get_kprobe_functions('zpl_aio'):
+    b.attach_kretprobe(event="zpl_aio_read", fn_name="trace_read_return")
+    b.attach_kretprobe(event="zpl_aio_write", fn_name="trace_write_return")
+else:
+    b.attach_kretprobe(event="zpl_read", fn_name="trace_read_return")
+    b.attach_kretprobe(event="zpl_write", fn_name="trace_write_return")
 b.attach_kretprobe(event="zpl_open", fn_name="trace_open_return")
 b.attach_kretprobe(event="zpl_fsync", fn_name="trace_fsync_return")