You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There'a set of bpftrace files that are failing with blk_mq_end_request for
kprobe. This fix is changing the kprobe to use a higher level function using
raw tracepoints.
Problem
After upgrading to 24.04, the stbtrace io command fails to generate any output.
Solution
Using raw tracepoints and changing the callback to be traced was changed from
blk_mq_start_request to block_io_start, and blk_mq_end_request to block_io_done.
The underlying kernel functions did not always call blk_mq_end_request, so the output
for the kprobe was not always hit with a corresponding kprobe on blk_mq_start_request.
This way we can get the raw tracepoint of block_io_start/block_io_done, which is always called.
tperkins-perforce
changed the title
DLPX-99371: test_stbtrace_io failed because it stbtrace did not produce any output
DLPX-99371 test_stbtrace_io failed because it stbtrace did not produce any output
Jun 10, 2025
This looks great, thanks for persevering through this one. I had a thought while reviewing this for us to consider (perhaps as a next step following the integration of this PR):
It looks like we may have all of the metadata and metrics needed in the disk_io_done raw tracepoint itself without the need to attach a probe to disk_io_start. In the disk_io_done tracepoint, we have the full request structure, and that structure also contains the timestamp when the I/O request started. If we have all we need in the disk_io_done probe, then we could eliminate the overhead of having to attach anything to disk_io_start...
tperkins-perforce
changed the title
DLPX-99371 test_stbtrace_io failed because it stbtrace did not produce any output
DLPX-93371 test_stbtrace_io failed because it stbtrace did not produce any output
Jun 11, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
There'a set of bpftrace files that are failing with blk_mq_end_request for kprobe. This fix is changing the kprobe to use a higher level function using raw tracepoints.Background
After upgrading to 24.04, the stbtrace io command fails to generate any output.Problem
Using raw tracepoints and changing the callback to be traced was changed from blk_mq_start_request to block_io_start, and blk_mq_end_request to block_io_done. The underlying kernel functions did not always call blk_mq_end_request, so the output for the kprobe was not always hit with a corresponding kprobe on blk_mq_start_request.Solution
This way we can get the raw tracepoint of block_io_start/block_io_done, which is always called.
Running fio, iostat, and estat related tools.Testing Done
Changed kprobes to raw tracepoints.Implementation