Skip to content

Commit

Permalink
fix zfsslower check for zpl_read / zpl_iter (fixes iovisor#4952) (iov…
Browse files Browse the repository at this point in the history
…isor#4953)

* fix zfsslower/zfsdist check for zpl_read / zpl_iter (fixes iovisor#4952)

This fixes a regression of iovisor#1248: The original fix iovisor#1324 assumed that
BPF.get_kprobe_functions checks the given regex against any substring of
the function name, but 2b203ea later changed get_kprobe_functions to do
re.fullmatch instead.

zfsdist was also not updated since
iovisor@2b203ea
and it the get_kprobe_functions seem to originate from the same
commit as those in zfsslower. So I assume the intend is the same.

Co-authored-by: seb314 <[email protected]>
  • Loading branch information
seb314 and seb314 authored Apr 2, 2024
1 parent 5e408a4 commit 6a5602c
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 8 deletions.
8 changes: 4 additions & 4 deletions tools/zfsdist.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,21 +142,21 @@
b = BPF(text=bpf_text)

# common file functions
if BPF.get_kprobe_functions(b'zpl_iter'):
if BPF.get_kprobe_functions(b'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(b'zpl_aio'):
elif BPF.get_kprobe_functions(b'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")
if BPF.get_kprobe_functions(b'zpl_iter'):
if BPF.get_kprobe_functions(b'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(b'zpl_aio'):
elif BPF.get_kprobe_functions(b'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:
Expand Down
8 changes: 4 additions & 4 deletions tools/zfsslower.py
Original file line number Diff line number Diff line change
Expand Up @@ -264,21 +264,21 @@ def print_event(cpu, data, size):
b = BPF(text=bpf_text)

# common file functions
if BPF.get_kprobe_functions(b'zpl_iter'):
if BPF.get_kprobe_functions(b'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(b'zpl_aio'):
elif BPF.get_kprobe_functions(b'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")
if BPF.get_kprobe_functions(b'zpl_iter'):
if BPF.get_kprobe_functions(b'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(b'zpl_aio'):
elif BPF.get_kprobe_functions(b'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:
Expand Down

0 comments on commit 6a5602c

Please sign in to comment.