NVME-LOG-CHANGED-(1)

πŸ“¦ version 3.2, in arch rolling

πŸ’… nvme-log-changed-ns-list β€” the NVMe Manual, bestie edition ✨

Okay so this page lives in the NVMe manual, and it's all about nvme-log-changed-ns-list: sending an NVMe Changed Namespace List log page request, and getting back both the result and the log. Let's get into it 🫢


🌸 NAME 🌸

nvme-log-changed-ns-list β€” sends the NVMe Changed Namespace List log page request, and gives you back the result and the log. Two-for-one, we love to see it πŸ’–


✨ SYNOPSIS ✨

nvme [<global-options>] log changed-ns-list <device> [--raw-binary | -b]

πŸ¦‹ DESCRIPTION πŸ¦‹

So what this does is: it grabs the NVMe Changed Namespace List log page off an NVMe device and hands you the returned structure. Iconic behavior, honestly.

The <device> parameter is mandatory β€” no skipping it, bestie β€” and it has to be an NVMe character device (like, for example, /dev/nvme0).

When it works? The returned Changed Namespace List log structure can come back in one of several ways depending on which option flags you use, lowkey your call:

  • the program can parse the structure and print it out in a readable format, or
  • the raw buffer can be printed to stdout so another program can parse it instead.

It's giving "choose your own adventure" but make it storage πŸ’€


πŸŽ€ OPTIONS πŸŽ€

  • -b, --raw-binary β€” prints the raw Changed Namespace List log buffer straight to stdout. No parsing, no filter, just vibes and bytes 🌈

πŸ‘‘ GLOBAL OPTIONS πŸ‘‘

These ones are defined up at the top-level nvme command, and they're available to this subcommand too. Main character options, honestly ✨

  • --dry-run β€” prints the command that would be executed, but doesn't actually execute it. All talk, no ioctl πŸ’…
  • --no-ioctl-probing β€” disables probing for 64-bit IOCTL support.
  • --no-retries β€” disables the retry logic on transient errors. One shot, periodt.
  • -o <fmt>, --output-format=<fmt> β€” sets the reporting format to normal, tabular, 'json, or binary. Only one output format at a time, bestie β€” pick a lane πŸŽ€
  • --output-format-version=<version> β€” selects the output format version. Version 1 uses the original field naming, while version 2 (the default) gives you more consistent and script-friendly field names. Any other versions get rejected, no negotiations πŸ™ˆ
  • --quiet β€” suppresses informational messages. Errors are still reported, and --quiet cancels any --verbose for the library log level. It's giving "I'm quiet but I'm still watching" πŸ’€
  • --set-options=<key=value>[,<key=value>...] β€” sets libnvme library options for this invocation. The supported keys are force-4k, mi-probe-enabled, test-base-dir and test-sysfs-dir. Mix and match, it's a little combo platter πŸ“
  • --timeout=<ms> β€” sets the timeout for the command in milliseconds. infinite or -1 waits without a time limit (0xffffffff). Patience is a virtue, or whatever 🌸
  • -v, --verbose β€” increases the level of detail in the output. You can specify it multiple times to crank the verbosity up even further. Spam it, queen πŸ‘‘

Oh and psst β€” these options can also be set as machine-wide defaults in nvme-cli.conf(5). But a command-line flag always overrides the file. Command line stays winning, no cap πŸ”₯


πŸ’œ EXAMPLES πŸ’œ

  • Print the Changed Namespace List Log page in a human readable format:
# nvme log changed-ns-list /dev/nvme0
  • Print the raw Changed Namespace List log to a file:
# nvme log changed-ns-list /dev/nvme0 --raw-binary > log.raw
⚠️ Real talk: it is probably a bad idea to not redirect stdout when you're using this mode. Like, genuinely β€” redirect it. Please. I'm begging πŸ™πŸ’€

⭐ NVME ⭐

Part of the nvme-user suite. Family business 🫢


Alright bestie, that's the whole page β€” you're officially an NVMe Changed Namespace List log page expert πŸ§šβ€β™€οΈβœ¨

Sign-off time: this gorgeous little page comes from the NVMe manual, dated 10/30/2026, and it's NVME-LOG-CHANGED-(1) β€” go forth and slay your namespace list πŸ’…πŸ’–

πŸ“¦ where this page comes from