[Bug 220965] Some dtrace_io probes lack struct bio reference

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Mon Jul 24 11:48:17 UTC 2017


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=220965

            Bug ID: 220965
           Summary: Some dtrace_io probes lack struct bio reference
           Product: Base System
           Version: CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: kern
          Assignee: freebsd-bugs at FreeBSD.org
          Reporter: fk at fabiankeil.de

According to dtrace_io(4) and "dtrace -lvn io:::", the dtrace_io probes use
a struct bio * as arg[0] to represent the I/O request, however that is only
true for the probes declared with a define with _BIO_ in its name.

Quoting sys/kern/subr_devstat.c:
    57  #define DTRACE_DEVSTAT_START()          SDT_PROBE2(io, , , start, NULL,
ds)
    58  #define DTRACE_DEVSTAT_BIO_START()      SDT_PROBE2(io, , , start, bp,
ds)
    59  #define DTRACE_DEVSTAT_DONE()           SDT_PROBE2(io, , , done, NULL,
ds)
    60  #define DTRACE_DEVSTAT_BIO_DONE()       SDT_PROBE2(io, , , done, bp,
ds)

As a result, even simple scripts like the example in dtrace_io(4) result in
errors like:
dtrace: error on enabled probe ID 1 (ID 41752: io:kernel:none:start): invalid
address (0x20) in action #6 at DIF offset 16

One can workaround this by skipping probes without bio reference by adding:
/args[0] != NULL/
but it would be more convenient if probes with bio reference had a different
name than
those that don't.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list