ZFCPDBF(8)

πŸ“¦ version 2.44.1, in opensuse-leap 16.0

πŸ’… ZFCPDBF β€” zfcp trace data sort/analyse tool ✨

okay bestie, so you know ZFCPDBF(8)? that's the manual page name β€” it lives in the System Manager's Manual, and the command is zfcpdbf, a zfcp trace data sort/analyse tool. she's an 8th-section girlie, very system-administration, very demure. let's get into it πŸŽ€


🌸 SYNOPSIS 🌸

zfcpdbf [OPTIONS] <adapter>
zfcpdbf {-h|-v}

literally that's the whole shape of it. options plus an adapter, or just a lil -h/-v and you're out. πŸ’–


πŸ¦‹ DESCRIPTION πŸ¦‹

so zfcpdbf interprets the information from various logging and tracing sources β€” think zfcp-, qdio- and cio-trace records, plus system messages if they're available. it's giving detective energy fr fr πŸ”

with offline debug data β€” like the stuff collected by dbginfo.sh, or extracted from a Linux system dump with crash version 5.1.0 or later β€” zfcpdbf can run on any platform that has a suitable Perl language environment. no cap, any platform. 🫢

now the compatibility tea, because this part matters:

  • any zfcpdbf since version 1.13.0 works with debug data from any Linux kernel since version 2.6.38.
  • recent zfcpdbf versions paired with older kernel versions will show zeros or empty values for newer trace record fields that the old kernel didn't have yet. 😭
  • older zfcpdbf versions paired with recent kernel versions just show the old trace record fields that zfcpdbf already knows about, and ignore any newer trace record fields of the kernel. πŸ™ˆ
for full exploitation, it is recommended to always use the latest version of zfcpdbf, no matter which kernel version the debug data comes from. periodt. πŸ‘‘

✨ OPTIONS ✨

  • -h, --help β€” print usage information, then exit. the classic "what does anything do" button πŸŽ€
  • -v, --version β€” print version information, then exit. main character energy, she tells you who she is πŸ’…
  • -x <AREA[,AREA]>, --exclude=<AREA[,AREA]> β€” list of trace areas to exclude (default none). blocklist behaviour, we love a boundary 🚫
  • -i <AREA[,AREA]>, --include=<AREA[,AREA]> β€” list of trace areas to include (default all). allowlist behaviour, very inclusive of her 🌈
  • -z, --zfcp-only β€” zfcp trace areas only. it's a short cut, lowkey the lazy-girl option and honestly? slay πŸ’…
  • -t <DIFF>, --timediff=<DIFF> β€” highlight requests with a round-trip processing time of <DIFF> or more. slow requests get the spotlight πŸ”₯
  • -e, --def-error β€” do NOT show deferred error messages. note the capital NOT, bestie, it's the reverse of what you'd expect 😭
  • -f, --force β€” force execution on a detected version mismatch. she's gonna do it anyway, might as well let her 🫢
  • -p <PATH>, --path=<PATH> β€” use directory <PATH> for the location of the trace records. point her at the evidence πŸ“
  • -r <PATH>, --root=<PATH> β€” prepend <ROOT> to standard trace record location. same vibe, but a prefix. (yes the manual says <PATH> in the synopsis and <ROOT> in the description β€” that's just how she is, don't @ me) 🧚
  • -m <ZONE>, --timezone=<ZONE> β€” set time zone for system message timestamps. timezone queen, she contains multitudes 🌍

πŸ“ PARAMETERS πŸ“

The trace areas

<AREA> may be REC, HBA, SAN, SCSI, QDIO, QDIO_SETUP, QDIO_ERROR, CIO_TRACE, CIO_MSG, CIO_CRW, KERNEL or MULTIPATH.

that's the whole menu, twelve of them, memorise them or don't (you can just scroll up, i'm not the police) πŸ’œ

The diff

<DIFF> is the value in seconds which has to be lapsed between sending the request and receiving its response. so: how long the round trip took. that's it, that's the number ⏱️

The paths

<PATH> is specifying the location (directory) of trace records which were pulled from another system β€” e.g. pulled from a dump. πŸ—‚οΈ

<ROOT> is specifying a directory which has to be prepended to the standard location of the trace records, e.g. typically used in conjunction with the result of the dbginfo script.

<PATH> and <ROOT> are only useful if used on non-live systems, and therefore typically used by service- or development-staff. if you're on a live system, these are not your girls πŸ™ˆ

The zone

<ZONE> is a time zone value in the [+-][h]h[:mm] format. yes that's the exact bracket situation, copy it carefully bestie ✨

The adapter

<adapter> β€” aka busid β€” is specifying the host adapter of which the trace information should be processed.

and here's the cute little quality-of-life bit: if a 4-digit value is provided, it is automaitically extended to the correct format 0.0.xxxx. (yes, "automaitically" β€” that's how the original spells it, i'm not fixing her typo, it's part of the lore πŸ˜­πŸ’–) so you can be lazy and she'll format it for you. iconic.


🧚 a lil sign-off 🧚

this whole vibe check comes to you courtesy of s390-tools, dated May 2022 β€” that's the source and version and date, all wrapped up with a bow πŸŽ€ go sort some traces, bestie, you're gonna eat πŸ’…βœ¨

πŸ“¦ where this page comes from