NVME-CONFIG-STATUS(1)

πŸ“¦ version 3.2, in arch rolling

πŸ’… nvme-config-status β€” a little vibe check for your legacy NVMe-oF config files (from the NVMe Manual, bestie)

okay so picture this: you're on the nvme command, and you want the tea on your legacy pre-3.0 config files. That's literally what nvme-config-status is for β€” it reports the legacy NVMe-oF config.json/discovery.conf conversion status. It does not touch anything. It's the friend who just tells you what's going on. 🫢


✨ SYNOPSIS ✨

nvme [<global-options>] config status

that's it. that's the whole thing. slay. πŸ’…


πŸ¦‹ DESCRIPTION πŸ¦‹

So this command reports the on-disk state of the legacy pre-3.0 configuration files, which are:

  • /usr/local/etc/nvme/config.json
  • /usr/local/etc/nvme/discovery.conf

…and also the state of the *.converted marker that nvme config convert leaves sitting next to each one it converts. πŸŽ€

Heads up bestie: this command never modifies or converts anything. It only reports state. No cap. It literally just looks and tells you.

You get one line printed for each legacy file that has something to report, and there are three possible vibes a file can be giving:

  • present, not yet converted β€” the file exists and has never been converted. (it's just… sitting there. untouched. iconic in a lazy way.)
  • present, already converted β€” the file exists and a <file>.converted marker confirms it was converted. That marker is a symlink pointing back at the file itself, and it's left in place deliberately so that a rollback to a pre-INI installation still finds the original legacy file. Once rollback is no longer a concern, both the file and the marker can be deleted. ✨
  • not present (a stale marker exists) β€” the file is gone but its <file>.converted marker is still hanging around, dangling. This is left over from an earlier conversion and is always safe to delete. πŸ—‘οΈ

Now β€” a file with neither itself nor a marker present is silently skipped. There's just nothing to say about it, and honestly? fair. But if that's true of both config.json and discovery.conf, you don't get two silent files and zero output β€” instead you get a single line:

no legacy configuration found

…which is so much better than staring at a blank terminal wondering if it broke. 😭

🧚 the stale marker situation (important lore)

Because the marker is a symlink keyed on the file's path, not its content, you can get a little chaos: if a file gets deleted and later replaced by a different, never-converted file at the same path (for example, a package rollback followed by a reinstall), the marker will resolve again β€” even though the new file itself was never converted. πŸ™ˆ

This command does not try to detect that case. Instead, when a file and a resolving marker are both present, it adds a note that the marker may be stale and that the file's contents should be verified against the INI configuration β€” so a human can decide what to do. You! You're the human! πŸ‘‘

And if you're in doubt? Just use nvme config convert. Converting an already-converted file is a safe no-op, so you literally cannot mess it up. πŸ”₯


🌸 OPTIONS 🌸

πŸ’œ GLOBAL OPTIONS πŸ’œ

These are defined at the top-level nvme command and are available to this subcommand (yes, even here, they love to be everywhere):

  • --dry-run β€” Print the command that would be executed, but do not actually execute it. (window shopping, basically πŸ›οΈ)
  • --no-ioctl-probing β€” Disable probing for 64-bit IOCTL support.
  • --no-retries β€” Disable retry logic on transient errors.
  • -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. (the original really does have that stray apostrophe before json β€” we keep it, character for character, because we respect the lore πŸ’€)
  • --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. βœ‹
  • --quiet β€” Suppress informational messages. Errors are still reported, and --quiet cancels any --verbose for the library log level. (shhh 🀫)
  • --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). ⏳
  • -v, --verbose β€” Increase the level of detail in the output. May be specified multiple times to further increase verbosity. (spam it, honestly)
Btw these options can also be set as machine-wide defaults in nvme-cli.conf(5). But a command-line flag always overrides the file. always. periodt. πŸ’…

⭐ EXIT STATUS ⭐

  • Returns 0 if neither legacy file has anything to report. πŸŽ‰
  • Returns a non-zero status if config.json or discovery.conf, or a .converted marker for either, is present β€” regardless of which of the states listed above applies. 😀
and this is the key part, bestie: use the printed output, not the exit status, to tell those states apart. The exit code is giving "something's there," not "here's which thing." iykyk.

πŸ“ EXAMPLES πŸ“

okay let's actually look at it in action:

  • Check the system's legacy configuration state, config.json already converted and no discovery.conf ever present:
# nvme config status

/usr/local/etc/nvme/config.json: present, already converted (/usr/local/etc/nvme/config.json.converted exists) -- delete both once rollback is no longer a concern
note: if /usr/local/etc/nvme/config.json was replaced after conversion (for example, a package rollback followed by reinstall), this marker may be stale; verify its contents against the INI configuration before deleting either file
  • Check a system that never had a legacy configuration:
# nvme config status

no legacy configuration found; nothing to convert

look at that clean output. not a single legacy config in sight. we love a fresh install. 🌈


πŸ‘‘ SEE ALSO πŸ‘‘

go read these too, they're all part of the family:


πŸ’– NVME πŸ’–

Part of the nvme-user suite. 🧚


and that's the whole page!! mwah πŸ’‹ β€” this lil rewrite was brought to you by the NVMe manual source, version/date 10/30/2026, filed under NVME-CONFIG-STATUS(1). take care of your legacy files, bestie, and remember: verify before you delete πŸŽ€βœ¨

πŸ“¦ where this page comes from