NVME-OCP-INTERNAL-LOG(1)

πŸ’– NAME πŸ’–

hey bestie, welcome to nvme-ocp-internal-log(1) β€” the page that conditionally retrieves the 07h Telemetry Host-Initiated log and the C9h OCP Strings Log from an NVMe device or from a user-specified file path. Then it takes those retrieved logs and decodes them into the human-readable output format you asked for. lowkey iconic decoder-ring energy πŸŽ€


✨ SYNOPSIS ✨

nvme [<global-options>] ocp internal-log <device>
                        [--telemetry-log=<file> | -l <file>]
                        [--string-log=<file> | -s <file>]
                        [--output-file=<file> | -f <file>]
                        [--data-area=<da> | -a <da>]
                        [--telemetry-type=<type> | -t <type>]
                        [--host-generate=<gen> | -g <gen>]
                        [--no-uuid | -n]

πŸ¦‹ DESCRIPTION πŸ¦‹

so here's the vibe, fr fr: this command conditionally retrieves the 07h Telemetry Host-Initiated log and the C9h OCP Strings Log from an NVMe device or from a user-specified file path. then it takes what it retrieved and decodes (or parses) it into the human-readable output format specified by you. πŸ’…

Without --output-format, the report is written as JSON to <file>.json, or as normal text to <file>.txt when nvme-cli is built without json-c. no cap, that's the default situation 🫢

The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1). main character parameter energy, literally πŸ‘‘

⚠️ warning bestie: this will only work on OCP compliant devices supporting this feature. Results for any other device are undefined. we do not make up results for random devices, periodt πŸ’€

On success it returns 0, error code otherwise. simple as that ✨


🌸 OPTIONS 🌸

  • -l <file>, --telemetry-log=<file> β€” File name to existing Telemetry Host- or Controller-Initiated raw binary data to be used. If no path is specified, a live retrieval of payload on <device> will be performed. πŸŽ€
  • -s <file>, --string-log=<file> β€” File name to existing OCP String Log raw binary data to be used. If no path is specified, a live retrieval of payload on <device> will be performed. πŸ¦‹
  • -f <file>, --output-file=<file> β€” Filepath name used as the prefix for the telemetry and string log bin files along with the human-readable parsed output file. it's giving naming rights πŸ’…
  • -a <da>, --data-area=<da> β€” Retrieves the specific data area requested. Valid inputs are 1, 2, 3, or 4. If this option is not specified, the default value is 1. pick your area, bestie ✨
  • -t <type>, --telemetry-type=<type> β€” Set the telemetry type to host or controller. With --telemetry-log, the type is detected from the Log Identifier of the provided log, and --telemetry-type is not required. Otherwise, if this option is not specified, the default value is host. host0 and host1 are deprecated and will be removed in the next major version; use host with --host-generate=0 in place of host0. not me reading the deprecation note out loud 😭
  • -g <gen>, --host-generate=<gen> β€” If set to 1, the controller shall capture the Telemetry Host-Initiated data representing the internal state of the controller at the time the associated Get Log Page command is processed. If set to 0, the controller shall not update this data before reading the log. Ignored with --telemetry-type=controller. If this option is not specified, the default value is 1. 🧚
  • -n, --no-uuid β€” Do not try to automatically detect UUID index when retrieving the OCP String Log from <device> (default UUID index to 0). leave the UUID detective work alone πŸ”

πŸ’œ GLOBAL OPTIONS πŸ’œ

The following options are defined at the top-level nvme command and are available to this subcommand:

  • --dry-run β€” Print the command that would be executed, but do not actually execute it. peek first, run later πŸ‘€
  • --no-ioctl-probing β€” Disable probing for 64-bit IOCTL support. no probing today, thank you 🫢
  • --no-retries β€” Disable retry logic on transient errors. one shot, no reruns πŸ’…
  • -o <fmt>, --output-format=<fmt> β€” Set the reporting format to normal, tabular, 'json, or binary. Only one output format may be used at a time. choose your fighter ⭐
  • --output-format-version=<version> β€” Select the output format version. Version 1 uses the original field naming, while version 2 (default) provides more consistent and script-friendly field names. Other versions are rejected. script-friendly is the moment πŸŽ€
  • --quiet β€” Suppress informational messages. Errors are still reported, and --quiet cancels any --verbose for the library log level. shhh era 🀫
  • --set-options=<key=value>[,<key=value>...] β€” Set libnvme library options for this invocation. Supported keys are force-4k, mi-probe-enabled, test-base-dir and test-sysfs-dir. πŸ› οΈ
  • --timeout=<ms> β€” Set the timeout for the command in milliseconds. infinite or -1 waits without a time limit (0xffffffff). no clock anxiety, unless you pick one ⏳
  • -v, --verbose β€” Increase the level of detail in the output. May be specified multiple times to further increase verbosity. say it louder for the people in the back πŸ“£

These options can also be set as machine-wide defaults in nvme-cli.conf(5). A command-line flag always overrides the file. rules are rules, bestie πŸ‘‘


🌈 EXAMPLES 🌈

  • Retrieve both OCP String Log and Telemetry Host-Initiated Log from device. Decode default data-area(s) and output to the default ./telemetry-log.json.
# nvme ocp internal-log /dev/nvme0
  • Retrieve the OCP String Log and the existing Telemetry Host-Initiated data without having the controller capture new data. Decode default data-area(s) and output to the default ./telemetry-log.json.
# nvme ocp internal-log /dev/nvme0 --host-generate=0
  • Retrieve Telemetry Host-Initiated data, reads in the OCP String Log locally. Decode default data-area(s) in default format.
# nvme ocp internal-log /dev/nvme0 --string-log=ocp_string_log.bin
 --output-file=output_file.json
  • Retrieve OCP String Log, reads in the Telemetry Host-Initiated Log locally. Decode data-areas 1 and 2, and output in json format.
# nvme ocp internal-log /dev/nvme0 --telemetry-log=host_telemetry.bin
 --output-format=json --output-file=output_file.json --data-area=2
  • Reads in both OCP String Log and Telemetry Host-Initiated Log locally. Decode data-areas 1 and 2, and output in normal text format.
# nvme ocp internal-log /dev/nvme0 --string-log=ocp_string_log.bin
 --telemetry-log=host_telemetry.bin --output-format=normal
 --output-file=output_file.txt --data-area=2

πŸ‘‘ NVME πŸ‘‘

Part of the nvme-user suite. iconic, no notes πŸ’–


okay that's the whole page, bestie 🫢 source: the nvme-user suite. the original footer only repeated the page label and gave no version or date, so we're not making one up β€” periodt πŸ’…

πŸ“¦ where this page comes from